develop branch
--> dashboard (working branch)
我使用
git merge --no-ff develop
将任何上游更改合并到仪表板中
git 日志:
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 多个提交,我想知道如何恢复合并,以便仪表板返回到合并前的状态
第二部分是,如果我不与
--no-ff
合并,我不会得到提交“将分支 'develop' 合并到仪表板”。我将如何回滚该合并?
恢复合并提交已在 其他问题中详尽介绍。当您进行快进合并(您描述的第二个)时,您可以使用
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
告诉 git 这是一次合并,我们想要回滚到 master 分支上的父提交。您可以使用 -m 2
来指定开发分支。
只需使用
git reset --hard HEAD^
重置合并提交即可。
如果您使用 --no-ff git 总是会创建合并,即使您在中间没有提交任何内容。如果没有 --no-ff git 只会快进,这意味着您的分支 HEAD 将设置为合并分支的 HEAD。要解决此问题,请找到您要恢复的提交 ID,然后
git reset --hard $COMMITID
。
git revert -m 1 88113a64a21bf8a51409ee2a1321442fd08db705
但可能会有意想不到的副作用。请参阅
git-scm.com/docs/git-revert中的
--mainline parent-number
选项
也许一种粗暴但有效的方法是签出该提交的左父项,复制所有文件,再次签出
HEAD
,然后用旧文件替换所有内容。然后 git 会告诉您正在回滚的内容,然后您创建自己的恢复提交:)!
如果您合并了分支,则使用拉取请求恢复合并并合并该拉取请求以恢复。
我觉得最简单的方法是:
git revert -m 1 xxxxxx
恢复“恢复”(如果恢复是使用分支合并的),或者使用 git revert xxxxxx
如果它是简单的恢复如果这只是最后一次提交,你可以简单地这样做
git reset --hard HEAD