Как отменить два коммита назад и зафиксировать только хорошие вещи? - PullRequest
13 голосов
/ 28 октября 2011

Я дважды совершил что-то не так. Как отменить два коммита и вернуть только хорошие вещи?

Ответы [ 2 ]

15 голосов
/ 28 октября 2011

Во-первых, git reset HEAD~2, чтобы отбросить два верхних коммита, оставив ваше рабочее дерево точно таким, как оно есть.Затем просто создайте новый коммит с тем, что вы хотите (например, с git add s, а затем git commit).

См. Сброс демистификации Скоттом Чаконом для подробностей осбивающий с толку git reset comamnd.

14 голосов
/ 28 октября 2011

Вы можете сделать git rebase -i HEAD~2, а затем использовать интерфейс, чтобы отбросить «плохие коммиты», которые существуют с тех пор, и очистить вашу историю. Это, однако, меняет историю проекта, и если вы уже продвинули (и другие потянули) свои изменения, есть некоторые социальные проблемы, которые нужно решить.

Другой вариант - git revert эти изменения. Затем в историю будут добавлены 2 новых коммита, что делает тот факт, что вы не хотите, чтобы эти два коммита были явными в истории проекта. Менее чистый, но с ним легче работать.

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