请考虑以下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?
答案 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允许您重写历史记录。如果有影响(修订版本完全不同,因此您实际上是在分歧。...如果其他人已经在旧分支上工作,那么他们将不得不将工作移到新分支之上,依此类推...可能)。