好吧,当我将一些代码合并到存储库时,我不专心(某些代码的流程发生了重大变化),所以我不得不恢复合并提交。我回家了一天,现在 master 上有更多提交,我似乎无法触发合并,以便我可以将我的代码放入 master 中,因为我有两个文件之间的差异。我很笨拙,已经把代码推到了原点。
这是最近提交的单线图历史记录:
如何恢复正确的合并屏幕以便我可以处理它?
我想我可以向我的分支添加另一个提交,然后尝试合并它,但这感觉很黑客。
当提交代码然后在分支上恢复时,由于原始恢复,重新提交相同的代码将不会产生任何效果。例如,假设您在分支上有一个或多个提交B
,然后用 commit 恢复它们R
:
master
|
* R
|\
| * B
Merging B
再次进入 master 不会有任何效果,因为 git 意识到恢复R
发生了after所有提交B
(即使B
再次合并)。
这里有两种可能的解决方案。
恢复 恢复 恢复
一种是恢复恢复(将此称为提交R'
).
master
|
* R'
|
* R
|\
| * B
执行此操作的命令很简单。$ git revert R
重新调整分支基础
另一种可能的解决方案是rebase整个分行B
所以它来了after回归R
(调用重新定位的分支B'
)。这有一些不同的变体,但它们都依赖于用历史记录中不存在的新提交重写分支历史记录。R
.
master
|
* New merge commit
|\
| * B'
| \
| ...
* R
|\
| * B
| ...
|/
* A
rebase的命令如下:
$ git checkout B
$ git rebase --no-ff A
Linus 有一些好的评论 https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt有关此场景的更多阅读。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)