很抱歉标题混乱,但我想不出更好的。
这是我的问题。我有两个分支,develop
和feature
。我遵循了这个过程:
在feature
中编写代码
将feature
合并到develop
发现错误,还原合并
编写一些无关的代码并直接提交到develop
。
现在我想将我直接对develop
所做的更改合并回feature
。问题是,当我这样做时,它会破坏我以前在feature
中所做的所有更改。我假设发生这种情况是因为步骤3中的还原比feature
中的任何代码更改都要新,所以它将该还原应用于更改。
有可能做我想做的事吗?我唯一能想到的是在develop
中还原还原,然后合并,然后还原还原的还原。那看起来有点麻烦。
最佳答案
我认为你可以分两步来纠正这种情况:
1)执行develop
的交互式rebase并删除revert commit,即。
git rebase -i HEAD~6 # or however far back is the merge commit
删除包含revert commit的行并完成rebase。此时,
develop
具有原始合并提交,但没有还原。2)在
develop
上执行rebase操作,指定develop
和feature
都来自的提交的哈希值。默认情况下,rebase将完全忽略合并提交,从而删除它:git checkout feature
git rebase <SHA-1>
这里的
<SHA-1>
来自于从feature
分支的提交。在这两个步骤之后,您的
develop
分支既没有merge commit也没有revert commit,您应该可以安全地将它合并到develop
中。我强烈建议阅读@torek在这个问题上给出的答案:
Accidentally merged in wrong branch to mine. Is there a way to remove these unwanted files?
关于git - git: merge 分支中的更改,该分支还原了先前的 merge ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42277685/