| name | git-surgeon |
| description | Non-interactive hunk-level git staging, unstaging, discarding, undoing, fixup, amend, squash, commit splitting, and commit reordering. Use when selectively staging, unstaging, discarding, reverting, squashing, splitting, or reordering individual diff hunks by ID instead of interactively. |
git-surgeon
CLI for hunk-level git operations without interactive prompts. Useful for AI
agents that need precise control over which changes to stage, unstage, discard,
or undo.
Commands
git-surgeon hunks
git-surgeon hunks --staged
git-surgeon hunks --file=src/main.rs
git-surgeon hunks --commit <HEAD/sha>
git-surgeon hunks --commit <sha> --full
git-surgeon hunks --blame
git-surgeon hunks --blame --staged
git-surgeon hunks --blame --commit <sha>
git-surgeon show <id>
git-surgeon show <id> --commit HEAD
git-surgeon stage <id1> <id2> ...
git-surgeon stage <id> --lines 5-30
git-surgeon commit <id1> <id2> ... -m "message"
git-surgeon commit <id>:1-11 <id2> -m
git-surgeon commit-to <branch> <id1> <id2> ... -m
git-surgeon commit-to main <>:1-11 <id2> -m
git-surgeon unstage <id1> <id2> ...
git-surgeon unstage <> --lines 5-30
git-surgeon discard <id1> <id2> ...
git-surgeon discard <> --lines 5-30
git-surgeon fixup <target>
git-surgeon fixup <target> --from <commit>
git-surgeon fixup <target> --from <commit1> <commit2> <commit3>
git-surgeon amend <commit>
git-surgeon reword HEAD -m
git-surgeon reword <commit> -m
git-surgeon reword HEAD -m -m
git-surgeon squash HEAD~1 -m
git-surgeon squash HEAD~2 -m -m
git-surgeon squash <commit> -m
git-surgeon squash HEAD~3 --force -m
git-surgeon squash HEAD~1 --no-preserve-author -m
git-surgeon undo <id1> <id2> ... --from <commit>
git-surgeon undo <> --from <commit> --lines 2-10
git-surgeon undo-file <file1> <file2> ... --from <commit>
git-surgeon HEAD \
--pick <id1> <id2> -m \
--rest-message
git-surgeon HEAD \
--pick <id1> -m -m \
--rest-message --rest-message
git-surgeon <commit> \
--pick <>:1-11,20-30 <id2> -m
git-surgeon move <sha> --after <target-sha>
git-surgeon move <sha> --before <target-sha>
git-surgeon move <sha> --to-end
git-surgeon update
git-surgeon HEAD \
--pick <id1> -m \
--pick <id2> -m \
--rest-message