Git - удалить коммит с пустым набором изменений с помощью ветки фильтра
Как удалить коммиты, у которых нет изменений, используя git filter-branch?
Я переписал свою историю git, используя:
git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD
это получилось хорошо, но теперь у меня много коммитов с пустым набором изменений. Я хотел бы удалить эти коммиты. Предпочтительно в msysgit.
Rebasing на самом деле не вариант, потому что у меня более 4000 коммитов, а половина из них должна быть удалена.
Ответы
Ответ 1
Просто добавьте параметр --prune-empty
:
git filter-branch --tree-filter 'rm -rf my_folder' --prune-empty -f HEAD
(И, конечно, если у вас есть другие ссылки, вы можете переписать все с помощью -- --all
вместо HEAD
.)
Обратите внимание, что это не совместимо с --commit-filter
; в этом случае У Чарльза Бейли есть ваш ответ.
Ответ 2
Просто посмотрев документацию для filter-branch
, вы сможете это сделать:
git filter-branch --commit-filter 'git_commit_non_empty_tree "[email protected]"' HEAD