Git:还原后再次合并分支

时间:2018-09-29 06:42:38

标签: git merge version-control

请考虑以下git树:

local repo:
          C---D---E       feat
         /         \
    A---B---F---G---H---I dev

origin remote repo:
          C---D---E   feat
         /         \
    A---B---F---G---H dev

我们有一个git repo,带有一个原点远程。有一个来自dev的分支,称为feat,在提交几次后便合并回dev。问题是feat分支对dev分支进行了很多修改,并带来很多冲突,因此我们决定以feat源代码为准,并在合并时使用了-X选项。我们过快地检查了结果,然后将其推到遥控器上。但是我们犯了一个错误,合并时使用-Xours而不是-Xtheirs,因此所有冲突都是使用dev分支代码而不是feat分支代码自动解决的。所有这些都被推到了起源。这是 H 提交。

我在本地所做的是git revert HEAD,它给了我 I 提交,撤消了 H 提交。从那里,我尝试使用正确的-Xtheirs选项再次合并feat分支,并且git告诉我树已经是最新的,但是feat分支的修改未出现在源代码中。

我尝试从一个壮举(一个救援分支)中分支出来,并将其合并到开发人员中,但是它做了同样的事情。我尝试在feat分支上进行一些小的更改,然后合并到dev中,但是只有这些小的更改才可以进入dev。

所以这是我的问题:我如何才能将feat分支中完成的工作恢复为dev?

1 个答案:

答案 0 :(得分:0)

我只是想让开发人员及时返回并重试合并:

git checkout dev
git reset --hard G # provide sha1 of the revision of G... and use with care, you know what they say of git reset hard
git merge -Xtheirs feat # this is what you wanted to do, right?
git push origin -f dev # set remote dev to have the rewritten history of local dev

Git允许您重写历史记录。如果有影响(修订版本完全不同,因此您实际上是在分歧。...如果其他人已经在旧分支上工作,那么他们将不得不将工作移到新分支之上,依此类推...可能)。