2024-02-14 07:00:04

回滚Git合并

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 <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+提交,我想知道如何恢复合并,以便仪表板回到合并前的状态

第二部分是,如果我不做merge with -no-ff,我不会得到commit ' merge branch 'develop' into dashboard' ..我怎么回滚归并?


当前回答

如果合并了分支,则使用拉取请求还原合并,并合并该拉取请求以还原。

我觉得最简单的方法是:

从develop/master(你合并的地方)中取出一个新的分支 使用git Revert -m 1 xxxxxx(如果使用分支合并了恢复)或使用git Revert xxxxxx(如果是简单的恢复)恢复“恢复” 新分支现在应该有您想再次合并的更改。 进行更改或合并该分支以开发/控制

其他回答

如果合并了分支,则使用拉取请求还原合并,并合并该拉取请求以还原。

我觉得最简单的方法是:

从develop/master(你合并的地方)中取出一个新的分支 使用git Revert -m 1 xxxxxx(如果使用分支合并了恢复)或使用git Revert xxxxxx(如果是简单的恢复)恢复“恢复” 新分支现在应该有您想再次合并的更改。 进行更改或合并该分支以开发/控制

从这里开始:

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

git revert -m 1 <merge commit hash>

Git revert添加了一个新的提交来回滚指定的提交。

使用- m1告诉git这是一个合并,我们想要回滚到主分支上的父提交。您可以使用- m2来指定开发分支。

在其他问题中已经详尽地介绍了恢复合并提交。当你做快进合并时,你描述的第二个,你可以使用git reset来回到之前的状态:

git reset --hard <commit_before_merge>

你可以找到<commit_before_merge> with git reflog, git log,或者,如果你觉得moxy(并且没有做任何其他事情):git reset——hard HEAD@{1}

只需用git reset重置合并提交-hard HEAD^。

如果你使用——no-ff, git总是创建一个合并,即使你没有提交任何东西。没有——no-ff git将只做一个快进,这意味着你的分支HEAD将被设置为合并分支的HEAD。要解决这个问题,找到你想要恢复到的commit-id,然后git重置——硬$ commitd。

git revert -m 1 88113a64a21bf8a51409ee2a1321442fd08db705

但可能会产生意想不到的副作用。参见——mainline parent-number选项git-scm.com/docs/git-revert

也许一种粗暴但有效的方法是签出该提交的左父文件,复制所有文件,再次签出HEAD,并用旧文件替换所有内容。然后git会告诉你回滚的是什么,你可以创建自己的revert commit:) !