回滚Git合并
develop branch --> dashboard (working branch)
我使用git merge --no-ff develop
,将任何上游更改合并到仪表板
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 <root@magneto.giveforward.com> 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 +提交,我想知道如何恢复合并,所以仪表板返回到状态预合并
第二部分是,如果我不做合并--no-ff
,我没有提交' 合并分支'开发'仪表板 '..我怎么会滚动合并回来?
其他问题已经详尽地讨论了恢复合并提交。 当你做一个快进合并,你描述的第二个,你可以使用git reset
来恢复到以前的状态:
git reset --hard <commit_before_merge>
你可以用git reflog
, git log
或者如果你感觉mox(而没有做其他的事情)find<commit_before_merge>
: git reset --hard HEAD@{1}
从这里:
http://www.christianengvall.se/undo-pushed-merge-git/
git revert -m 1 <merge commit hash>
Git还原添加了一个新的提交,回滚指定的提交。
使用-m 1告诉它,这是一个合并,我们要回滚到主分支上的父提交。 您将使用-m 2来指定开发分支。
只需重新设置合并提交git reset --hard HEAD^
。
如果你使用–no-ff git总是创build一个合并,即使你没有提交任何东西。 如果没有–no-ff git只会做一个快进,这意味着你的分支HEAD将被设置为合并分支的HEAD。 要解决这个问题,find你想要恢复的commit-id,然后git reset --hard $COMMITID
。
git reset -m 1 88113a64a21bf8a51409ee2a1321442fd08db705
但可能会有意想不到的副作用。 请参阅git-scm.com/docs/git-revert中的–mainline parent-number选项
也许一个残酷但有效的方法是检出该提交的左侧父项,复制所有文件,再次检出HEAD,并用旧文件replace所有内容。 然后git会告诉你什么是回滚,你创build自己的恢复提交:)!