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

Удалить старый Git commit из ветки без использования обратного патча?

У меня есть ведущая ветка вроде этого.

A -- B -- C -- D -- E -- HEAD

Есть ли какая-либо команда, которая удаляет одну из старых фиксаций и сохраняет остальные, скажем, commit C?

Наконец, он становится таким, как

A -- B -- D -- E -- HEAD

Я знаю, что мы можем использовать обратный патч и применять новую фиксацию с обратным патчем для удаления commit C, но древовидная структура не будет настолько прозрачной и выглядит громоздкой, т.е.

A -- B -- C -- D -- E -- C(apply reverse patch) -- HEAD

Кто-нибудь знает?

4b9b3361

Ответ 1

Используйте интерактивную перезагрузку. Например, чтобы вернуться назад 5 коммитов:

git rebase -i HEAD~5

Затем в появившемся редакторе удалите строку, содержащую фиксацию, которую вы хотите удалить.

Ответ 2

Интерактивная перезагрузка работает, но для этого нужно выполнить только одну команду:

git rebase --onto B C

По-прежнему см. комментарии к ответу "интерактивная перебаза". Они также применяются здесь.