Как отменить предыдущий коммит в ветке master и сохранить код в другой ветке? - PullRequest
0 голосов
/ 14 ноября 2011

Я только что нажал на производственную площадку, и все изменения были выполнены на мастере. Но я понял, что код, который я нажал, должен быть изменен, поэтому мне нужно отменить последний коммит, но взять весь этот код из этого коммита и поместить его в другую ветку, чтобы я мог протолкнуть его позже .... любой способ сделать это 1001 *

Ответы [ 3 ]

3 голосов
/ 14 ноября 2011

Есть много способов исправить это.

Вот что я бы сделал (с небольшим количеством дополнительной страховки)

Предполагая, что ваша ГОЛОВА находится в «неправильном месте» (без каламбура) вы можете

 git branch rescue
 # you are still on master
 git reset HEAD^ # soft resets the last commit
 git push -f     # to undo the push - beware of other users of the push-branch

Теперь отредактировать / спасти ваш коммит на месте (потому что изменения последнего коммита теперь снова ожидают).Если возникла чрезвычайная ситуация, вы всегда можете проверить ветку rescue, которая является просто копией ГОЛОВКИ, когда вы начали этот пост.

1 голос
/ 14 ноября 2011

Рекомендую исправить уже переданный коммит с корректным откатом.Вы также можете безопасно начать свои эксперименты с отмененного коммита.См. Также Git Community Book, Отмена в Git

git revert HEAD
git push

Переписывание уже опубликованных коммитов считается плохой практикой (цитата из этого же раздела):

Исправление совершенных ошибок

Если вы сделаете коммит, который позже захотите, чтобы не было, есть два принципиально разных способа решения проблемы:

Вы можете создать новый коммит, который отменяет всебыло сделано старым коммитом.Это правильно, если ваша ошибка уже была обнародована.

Вы можете вернуться и изменить старый коммит.Вы никогда не должны делать это, если вы уже обнародовали историю;git обычно не ожидает, что «история» проекта изменится, и не может корректно выполнять повторные объединения из ветви, в которой была изменена история.

См. также раздел «Опасности перебазирования» из Pro Git, Rebasing почему это не хорошо.

0 голосов
/ 02 октября 2012

2 шага:

1) сделать ответвление от текущего мастера. (Сохранение вашего кода, чтобы вы могли выполнить исправление.)

2) Откат 1 Выполнить в мастере. git reset --hard HEAD ~ 1

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