tummychow/git-absorb
git commit --fixup, but automatic
Recommended between 2025-09-22 and 2026-07-26. Last pushed 2026-02-14.
▲ 10 recommend · ▼ 1 criticism
What hackers say
“I also use git absorb ( https://github.com/tummychow/git-absorb ) and lazygit a lot”
— QGQBGdeZREunxLe, 2026-07-26 · strong recommendation · original comment on Hacker News ↗
show original comment
I'm a big fan of https://github.com/MitMaro/git-interactive-rebase-tool on the terminal. I also use git absorb ( https://github.com/tummychow/git-absorb ) and lazygit a lot ( https://github.com/jesseduffield/lazygit ).
“I have been making use of git-absorb. Leaving a really tidy git history is satisfying.”
— springtimesun, 2026-07-22 · strong recommendation · original comment on Hacker News ↗
show original comment
…all diffs and descriptive commit check points. Probably the default for many of you who work on teams, but something I didn’t really follow when I had the entire code context and changes in my head. I have been making use of git-absorb. Leaving a really tidy git history is satisfying. https://github.com/tummychow/git-absorb
“I also love git-absorb for automatic fixups of a commit stack.”
— pabs3, 2026-01-13 · strong recommendation · original comment on Hacker News ↗
show original comment
git rebase conflict resolution is a lot less scary with the zdiff3 merge.conflictStyle option. Also incremental rebasing with mergify/git-imerge/git-mergify-rebase/etc is really helpful for long-lived branches that aren't merged upstream. https://github.com/brooksdavis/mergify https://github.com/mhagger/git-imerge https://github.com/CTSRD-CHERI/git-mergify-rebase https://gist.github.com/nicowilliams/ea2fa2b445c2db50d2ee6509c3526297 I also love git-absorb for automatic fixups of a commit stack. https://github.com/tummychow/git-absorb
“This complements just about any git flow, vastly reducing the pain of realising you want to amend your staged changes into multiple commits.”
— nicois, 2025-11-10 · strong recommendation · original comment on Hacker News ↗
show original comment
A large percentage of git users are unaware of git-absorb ( https://github.com/tummychow/git-absorb ). This complements just about any git flow, vastly reducing the pain of realising you want to amend your staged changes into multiple commits. This sits well alongside many TUIs and other tools, most of which do not offer any similar capability.
“IUUC This is already implemented for git as an extension. https://github.com/tummychow/git-absorb”
— qsera, 2026-04-21 · original comment on Hacker News ↗
show original comment
>The absorb command will do a lot of this for you by identifying which downstream mutable commit each line or hunk of your current commit belong in and automatically squashing them down for you. This feels like magic every time I use it (and not the evil black box black magic kind of magic where nothing can be understood), and it’s one of the core pieces of Jujutsu’s functionality that make the megamerge workflow so seamless. IUUC This is already implemented for git as an extension. https://github.com/tummychow/git-absorb I think this is such a basic thing that should be part of any DVCS implementation.
“Add in git-absorb[2] and the heavy-lifting is taken care of.”
— fphilipe, 2026-04-14 · original comment on Hacker News ↗
show original comment
…[1] or the rebase.updateRefs config. Combined with `git commit --fixup`, rebase.autoStash, and rebase.autoSquash rebasing stacks becomes a breeze (as long as you work off from the tip of your stack). Add in git-absorb[2] and the heavy-lifting is taken care of. My biggest gripe with GitHub when working with stacks – and something that's not clarified in these docs – is whether fast-forward merges are possible. Its "Merge with rebase" button always rewrites the commit. They do mention that the stack needs to be rebased in order to merge it. My workaround has been `git merge --ff-only top-branch-of-stack` to merge the entire stack locally into main (or anything in between actually) and then pu…
“https://github.com/tummychow/git-absorb is handy to add formatting changes into the right commit after commits already happened.”
— Mic92, 2025-12-27 · original comment on Hacker News ↗
show original comment
I can second that. If there are multiple commits: https://github.com/tummychow/git-absorb is handy to add formatting changes into the right commit after commits already happened.
“A tool like https://github.com/tummychow/git-absorb has been on my to-try list for a while”
— __float, 2025-11-11 · original comment on Hacker News ↗
show original comment
I try to leave a good commit trail in my PRs. These are often _not_ the reality of how the code was written and originally committed, but a rough approximation of the intended steps with the benefit of hindsight. A tool like https://github.com/tummychow/git-absorb has been on my to-try list for a while, but for now I do it by hand.
“does a bit more, figuring out the exact changes that should be fixed up.”
— koterpillar, 2025-09-22 · original comment on Hacker News ↗
show original comment
git-absorb ( https://github.com/tummychow/git-absorb ) does a bit more, figuring out the exact changes that should be fixed up.
Criticism
“git-absorb won't merge commits into anything that precedes a merge.”
— mhw, 2026-04-23 · original comment on Hacker News ↗
show original comment
I've worked with git using the mega-merge approach, and one thing I found is that git-absorb won't merge commits into anything that precedes a merge. It works fine for absorbing changes into earlier commits on a feature branch, but not from the WIP branch back into the multiple feature branches that are the parents of the mega-merge. jj handles this with no problems. From this comment on the git-absorb issue tracker I wouldn't expect it to be fixed soon either: https://github.com/tummychow/git-absorb/issues/134#issuecomment-2547130841
Badge for your README
[](https://hackerrepos.org/repo/tummychow/git-absorb)