Подтвердить что ты не робот

Удалить старые git коммиты

Я очень новичок в 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 like they never happend.

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

4b9b3361

Ответ 1

Это возможно с помощью 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

На втором этапе вы можете редактировать сообщения фиксации.

Ответ 2

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

запустить rebase:

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