好的,当我将一些代码合并到存储库中时,我很专心(某些代码的流程发生了重大变化),所以我不得不还原合并提交。我整天回家,现在在master上有更多提交,而且我似乎无法触发合并使我可以将代码带入master,因为我有2个文件之间的差异。我很笨拙,已经被迫将代码编写为原始代码。
这是最近一次提交的单线图历史记录:
如何返回适当的合并屏幕,以便我可以处理它?</ p>
我当时想我可以在分支中添加另一个提交,然后尝试合并它,但这感觉有点黑。
答案 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,以供阅读。