还原原始合并后合并

时间:2018-11-02 14:47:34

标签: git

好的,当我将一些代码合并到存储库中时,我很专心(某些代码的流程发生了重大变化),所以我不得不还原合并提交。我整天回家,现在在master上有更多提交,而且我似乎无法触发合并使我可以将代码带入master,因为我有2个文件之间的差异。我很笨拙,已经被迫将代码编写为原始代码。

这是最近一次提交的单线图历史记录:

Commit History

如何返回适当的合并屏幕,以便我可以处理它?<​​/ p>

我当时想我可以在分支中添加另一个提交,然后尝试合并它,但这感觉有点黑。

1 个答案:

答案 0 :(得分:2)

提交代码然后在分支上还原时,由于原始还原,重新提交相同的代码将无效。例如,假设您在分支B上有一个或多个提交,并通过提交R还原了它们:

master
|
* R
|\
| * B

再次将B合并为master无效,因为git意识到R中的所有提交都在 之后发生了B的还原(即使{{1 }}再次合并。)

这里有2种可能的解决方案。

还原还原

一种是还原还原(将此提交称为B)。

R'

此命令很简单。 master | * R' | * R |\ | * B


重新设置分支机构

另一种可能的解决方案是对整个分支$ git revert R 重新设置,以便它在 还原B之后出现(称为重新设置分支{ {1}})。这样做有几种不同的变体,但是它们都依赖于用R历史中不存在的新提交重写分支历史。

B'

rebase的命令如下:

R

Linus在这种情况下有一些不错的commentary,以供阅读。