blog.philz.dev · 1mo · discuss
Thing I learned recently from Josh Bleecher Snyder: there are enough git plumbing commands now that you can produce a commit object that's the same as "checkout origin/main and cherry-pick one-commit" with just plumbing, without creating worktrees, using temporary indexes, and so on. The magic incantation is (where c is the commit to cherry-pick): git commit-tree \ "$(git merge-tree --write-tree --no-messages --merge-base c^ origin/main c)" \ -p origin/main \ -F <(git log -1 --format=%B c) That's a mouthful, but the core trick is specifying merge-base explicitly in there. This is handy if you haven't yet internalized jj and want to...