git-surgeon CLI
CLI и скилл дают агенту точный git без интерактива: коммит отдельных блоков, разделение коммитов и слияние правок в старые.
- 192 ★ репозитория
- Последний коммит
Широкий доступ
Почему такой уровень
- Команды `discard`, `fold`, `split`, `squash` и `move` меняют рабочее дерево и историю git без возможности простого отката.
- Утилита ставится скриптом из сети.
Установка
- Работает в
Ручная установка
curl -fsSL https://raw.githubusercontent.com/raine/git-surgeon/main/scripts/install.sh | bashПервый вариант из раздела Quick start. Альтернативы: `cargo install git-surgeon` и Homebrew. Затем `git-surgeon install-skill --claude`.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Команды `discard`, `fold`, `split`, `squash` и `move` меняют рабочее дерево и историю git без возможности простого отката.
- Утилита ставится скриптом из сети.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
git-surgeon решает проблему агентов, которые не умеют `git add -p`. Команда `git-surgeon hunks` выводит блоки изменений с короткими идентификаторами, а `stage`, `unstage`, `discard` и `commit` работают с ними по ID. Можно закоммитить выбранные блоки одним шагом или отдельные строки внутри блока. Для перестройки истории есть `split`, `fold`, `amend`, `squash`, `reword`, `move` и `undo`: смешанный коммит делится на сфокусированные, исправление встраивается в более ранний коммит, а блоки отменяются из прошлых коммитов. Команда `commit-to` кладет блоки в другую ветку без переключения на нее. Скилл учит агента вызывать утилиту вместо разрушительных обходов с `git checkout`.
Для кого. Разработчикам, которые просят Claude Code, Codex или OpenCode делать аккуратные раздельные коммиты, а не терять правки при сбросе файлов.
Подходит, если
- Диф смешал рефакторинг и новую функцию, и их нужно развести по двум коммитам.
- Исправление опечатки из ревью надо вплавить в коммит недельной давности.
- Закоммиченный блок оказался лишним и откатывается точечно.
- Правку нужно положить в соседнюю ветку без переключения на нее.
- Агент тратит ходы на хитрые обходы `git add -p`.
Не подходит, если
- Репозиторий работает на Jujutsu: автор отсылает к jj-hunk-tool.
- Историю уже отправили в общую ветку, и ее переписывание сломает коллег.
- Хватает коммита целого файла: обычный `git commit` проще.
Пример запроса к агенту
Раздели мои изменения на два коммита: рефакторинг отдельно, новая функция отдельно.Ограничения
Утилита работает над git-репозиторием и переписывает историю командами `fold`, `split`, `squash`, `move`, поэтому запускать их стоит на локальных ветках, еще не отправленных коллегам. Идентификаторы блоков меняются вместе с диффом, и агент заново вызывает `hunks` после каждой правки. Скилл ставится отдельной командой `install-skill` для Claude Code, OpenCode или Codex. Для Jujutsu утилита не подходит. Установка из shell-скрипта по `curl | bash` требует доверия к источнику, есть варианты через Cargo и Homebrew.
Как отключить. Удалите бинарный файл (`cargo uninstall git-surgeon` или `brew uninstall git-surgeon`) и папку скилла `git-surgeon` из каталога скиллов агента. Для плагина Claude Code выполните `claude plugin uninstall git-surgeon@git-surgeon`.
Частые вопросы
Как поставить git-surgeon?
Выполните `cargo install git-surgeon` или `brew install raine/git-surgeon/git-surgeon`. Затем `git-surgeon install-skill --claude` ставит скилл для Claude Code, а флаги `--opencode` и `--codex` для других агентов.
Чем он лучше git add -p?
Он не требует интерактива. Агент видит блоки с идентификаторами и коммитит их командой `git-surgeon commit` без диалога, который ему недоступен.
Можно ли коммитить отдельные строки?
Да, внутри блока можно выбрать диапазон строк. В README есть пример разделения одного блока на несколько коммитов.
Как поставить плагином в Claude Code?
Выполните `claude plugin marketplace add raine/git-surgeon`, затем `claude plugin install git-surgeon@git-surgeon`.
Работает ли с Jujutsu?
Нет. Для Jujutsu автор рекомендует отдельный проект jj-hunk-tool.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыСкилл раскладывает правки на логичные коммиты по Conventional Commits и безопасно ведет ветки, отправку и pull request.
gitai — открытый сервер контроля версий для сотен агентов: слияние через compare-and-swap, серверная история и CLI graft.
multi-gitter запускает один сценарий в нескольких Git-репозиториях и создает запрос на слияние для полученных изменений.
Локальный шлюз перед git push: ревью, тесты, документация и линтер проходят в отдельной копии, и только после этого ветка уходит в удаленный репозиторий
Три UNIX-утилиты: форк каталога без копирования, запуск агента в песочнице и патч с его правками.
Навык и плагин для Git и GitHub: ветки, Conventional Commits и путь запроса на слияние до зеленого мержа.
Коротко о README
README показывает типичный провал агента, который сбрасывает файл ради раздельных коммитов, и сравнивает его с работой через git-surgeon. Таблица подсказывает, когда брать `amend`, а когда `fold`.
Бейдж для README
Исходный SKILL.md
--- name: git-surgeon description: Non-interactive hunk-level git staging, unstaging, discarding, undoing, fold, 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 ```bash # List unstaged hunks (shows ID, file, +/- counts, preview) git-surgeon hunks # List staged hunks git-surgeon hunks --staged # Filter to one file git-surgeon hunks --file=src/main.rs # List hunks from a specific commit git-surgeon hunks --commit <HEAD/sha> # Show all hunks with line numbers (for small commits needing line-range splits) git-surgeon hunks --commit <sha> --full # Show blame info (which commit introduced each line) git-surgeon hunks --blame git-surgeon hunks --blame --staged git-surgeon hunks --blame --commit <sha> # Show full diff for a hunk (lines are numbered for use with --lines) git-surgeon show <id> git-surgeon show <id> --commit HEAD # Stage specific hunks git-surgeon stage <id1> <id2> ...