С SVN легко свернуть-слияние фиксации, но как это сделать с помощью Git?
Git: как выполнить обратное слияние фиксации?
Ответ 1
Чтобы создать новую фиксацию, которая "отменяет" изменения прошлой фиксации, используйте:
$ git revert <commit>
Также можно фактически удалить фиксацию из произвольной точки в прошлом путем перезагрузки и затем сброса, но вы действительно не хотите этого делать, если вы уже подтолкнули свои фиксации к другому репозиторию (или кто-то еще нажал от вас).
Ответ 2
Чтобы отменить коммит слияния, вам нужно использовать: git revert -m <parent number>
. Так, например, чтобы отменить самый последний коммит слияния, используя родительский номер с номером 1, вы бы использовали:
git revert -m 1 HEAD
Чтобы отменить коммит слияния перед последним коммитом, вы должны сделать:
git revert -m 1 HEAD^
Используйте git show <merge commit SHA1>
чтобы увидеть родителей, нумерация - это порядок их появления, например, Merge: e4c54b3 4725ad2
документация по git merge: http://schacon.github.com/git/git-merge.html
обсуждение git merge (запутано, но очень подробно): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
Ответ 3
Если вы правильно поняли, вы говорите о том, чтобы сделать
svn merge -rn:n-1
чтобы вернуться из более раннего фиксации, и в этом случае вы, вероятно, ищете
git revert
Ответ 4
git reset --hard HEAD^
Используйте приведенную выше команду для возврата изменений слияния.
Ответ 5
Если вы не хотите комментировать или хотите совершить позднее (сообщение фиксации по-прежнему будет подготовлено для вас, которое вы также можете редактировать):
git revert -n <commit>