情况如下:
我有一个开发分支和功能分支,在完成功能时我想将它合并到develop中。因此产生冲突,我首先开发成功能来解决它然后提交修改但是:
我只提交解决冲突的文件,忘记其余的。因此,当我将功能合并到开发中时,它会回滚许多提交...
origin develop> ----o-c-c-c-o-------m------
\ \ /
local feature> f-------m-r-o
提交' c'与功能合并但是当再次与开发合并时我忘记了它们。
我该如何解决这个问题?
编辑:
我没有尝试过git,所以我要求的答案比我的问题更具针对性 git reset 响应
答案 0 :(得分:1)
你的合并很糟糕。
origin develop> ----o1-c1-c2-c3-o2---------m2------
\ \ /
local feature> f1----------m1-r1-o3
您错误在提交m1
,并且更改会在链中进一步传播。
这个问题最干净的解决方案是重写历史记录,所以一切都在正常流动。然而,这打破了每一个人的历史,所以他们需要将他们的分支重置为新的头部,只有在你推动之前看到你的错误时才推荐。
修复程序正在重做合并,然后重做与主服务器的最终合并。
on branch: feature
:git reset --hard f1
我们将回到提交f1
on branch: feature
:git merge o2
重做我们的合并,确保我们这次没有丢弃我们的索引
on branch: feature
:git cherry-pick r1
包括在提交r1
on branch: feature
:git cherry-pick o3
包括在提交o3
on branch: feature
:git push -f
强制推送我们的固定功能分支
on branch: feature
:git checkout develop
切换到开发,我们可以解决它
on branch: develop
:git reset --hard o2
我们将回到提交o2
on branch: develop
:git merge feature
重做主要分支合并的功能,这将修复整个链。
on branch: develop
:git push -f
强行推动我们的固定开发部门。
答案 1 :(得分:1)
由于你已经推动过,最安全的事情(在develop
上)是挑选丢失的提交。对于每个提交C,运行git cherry-pick C
。