Лучший общий ответ здесь, вероятно, заключается в том, что вы должны сделать git revert
для функциональной отмены первого коммита A
:
git revert <SHA-1 of A commit>
Чтобы узнать хеш коммита для A
, просто введитеgit log
и ищите хэш самого первого коммита.Это будет выглядеть примерно так: 3kd983ngl74ok
.
Это добавит новый коммит к вашей ветке master
, который функционально отменяет все, что добавлено A
коммит.Таким образом, ваша ветвь master
теперь будет выглядеть так:
master: A -- B -- R
, где R
- это новая фиксация возврата.Но ветка master
будет вести себя так, как если бы A
никогда не происходило.
Это самый безопасный вариант, если вы уже опубликовали свою ветку в хранилище.
Другая возможность здесьсделать интерактивную перебазировку и хирургическим путем удалить коммит A
из истории.Но это будет более трудоемким, более сложным, а также откроет возможность того, что плохие вещи могут случиться, когда вы принудительно нажмете master
на пульте.