Откатить ГИТ слияния



develop branch
--> dashboard (working branch)


Я использую git merge --no-ff develop чтобы объединить любые изменения вверх по течению в dashboard



git log:



commit 88113a64a21bf8a51409ee2a1321442fd08db705
Merge: 981bc20 888a557
Author: XXXX <>
Date: Mon Jul 30 08:16:46 2012 -0500

Merge branch 'develop' into dashboard

commit 888a5572428a372f15a52106b8d74ff910493f01
Author: root <[email protected]>
Date: Sun Jul 29 10:49:21 2012 -0500

fixed end date edit display to have leading 0

commit 167ad941726c876349bfa445873bdcd475eb8cd8
Author: XXXX <>
Date: Sun Jul 29 09:13:24 2012 -0500


в слиянии было около 50 + коммитов, и мне интересно, как просто вернуть слияние, чтобы панель мониторинга вернулась в состояние pre-merge



вторая часть этого, если я не слияние с --no-ff, Я не получаю фиксацию'объединить ветку "разработка" в dashboard' .. Как бы я откатил это слияние обратно?

530   4  
git

4 ответов:

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

git reset --hard <commit_before_merge>

вы можете найти <commit_before_merge> С git reflog,git log, или, если вы чувствуете Мокси (и не сделали ничего другого):git reset --hard HEAD@{1}

отсюда:

http://www.christianengvall.se/undo-pushed-merge-git/

git revert -m 1 <merge commit hash>

git revert добавляет новую фиксацию, которая откатывает указанную фиксацию.

использование -m 1 говорит ему, что это слияние, и мы хотим вернуться к родительской фиксации в главной ветви. Вы бы использовали-m 2, чтобы указать ветку разработки.

просто сбросьте фиксацию слияния с git reset --hard HEAD^.

Если вы используете --no-ff git всегда создает слияние, даже если вы ничего не совершали между ними. Без --no-ff git просто сделает быструю перемотку вперед, что означает, что ваша голова ветвей будет установлена на голову объединенной ветви. Чтобы решить эту проблему, найдите commit-id, к которому вы хотите вернуться, и git reset --hard $COMMITID.

git reset -m 1 88113a64a21bf8a51409ee2a1321442fd08db705

но может иметь неожиданные побочные эффекты. См. параметр -- mainline parent-number вgit-scm.com/docs/git-revert

возможно, грубым, но эффективным способом было бы проверить левый родитель этой фиксации, сделать копию всех файлов, снова проверить голову и заменить все содержимое старыми файлами. Затем git расскажет вам, что откатывается, и вы создадите свой собственный revert commit :)!

Comments

    Ничего не найдено.