Удалить старые коммиты git - PullRequest
72 голосов
/ 15 марта 2012

Я очень новичок в git, и мне было интересно, возможно ли что-то подобное?

>git log --pretty=oneline --abbrev-commit
2f05aba Added new feature
3371cec Fixed screw up    <-- I want to remove this
daed25c Screw up          <-- and remove this.
e2b2a84 First.                So it's like they never happend.

Возможно ли это?

Ответы [ 3 ]

73 голосов
/ 10 июня 2013

Если вы действительно хотите удалить их (стереть их из истории, больше никогда их не видеть), вы можете

запустить ребаз:

git rebase -i HEAD~4

, а затем просто удалите (или закомментируйте) строки, соответствующие коммитам, которые вы хотите удалить, например:

pick 2f05aba ... #will be preserved
#pick 3371cec ... #will be deleted
#pick daed25c ... #will be deleted
pick e2b2a84 ... #will be preserved
56 голосов
/ 15 марта 2012

Это возможно с git rebase. Попробуйте следующее

git rebase -i HEAD~4

, а затем следуйте интерактивным инструкциям в редакторе. На первом этапе вы «раздавливаете» коммиты. Это должно выглядеть примерно так:

pick 2f05aba ... will be preserved
squash 3371cec ... will be squashed with daed25c
squash daed25c ... will be squashed with e2b2a84
pick e2b2a84 .. will contain this and 3371cec and daed25c

На втором шаге вы можете редактировать сообщения коммита.

1 голос
/ 18 мая 2018

Сквош полезен, когда вы хотите сгенерировать список объединенных коммитов под одним хешем, но если вы хотите взять три отдельных коммита и получить окончательный вывод, который выглядит так, как будто это был один коммит, я рекомендую fixup

git rebase -i HEAD~4

pick 2f05aba ... will be preserved
fixup 3371cec ... will be merged with daed25c
fixup daed25c ... will be merged with e2b2a84
pick e2b2a84 .. will include 3371cec and daed25c, but only the commit message of e2b2a84

Дополнительную информацию можно найти в списке команд интерактивного интерфейса пользователя rebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...