rha*_*aft 8 git merge conflict rebase
在完成一个主题分支的工作后,我将主题分支合并为master,如下所示:
o---*---o---o topic
/ \
o---o---o---*---o---o---+ master
Run Code Online (Sandbox Code Playgroud)
标有"*"的提交修改了相同的代码,因此合并导致合并提交中解决的合并冲突(标记为"+").
当我合并并解决冲突时,我的同事将新的提交推送到主人(标记为'n'),导致以下历史记录:
o---*---o---o topic
/ \
o---o---o---*---o---o---+ master
\
n---n origin/master
Run Code Online (Sandbox Code Playgroud)
现在,推送我的本地主分支当然会导致错误,因为它没有快进,所以我有两个选择:
扔掉我的工作,将master重置为origin/master并重做合并.我想避免这种情况,因为我必须重新解决冲突.
Rebase master到origin/master并推送.这就是我的问题:执行此rebase(即使使用-p开关)也不能顺利运行,合并提交再次显示相同的冲突,即使新提交('n')没有更改主题分支触及的任何内容.因此,我必须在rebase期间再次解决冲突,并且与选项1具有相同的结果.
我想要实现的是重新定义合并提交'+'而不必再次解决冲突:
o---*---o---o-------- topic
/ \
o---o---o---*---o---o---n---n---+ master & origin/master
Run Code Online (Sandbox Code Playgroud)
编辑:
启用了rerere开关,但似乎没有任何帮助; 除了将config.rerere设置为true以解决我的问题,我还需要做什么吗?
编辑2:
将merge-commit('+')合并到origin/master也可以工作(如注释和答案中所提出的那样),但是会导致一种丑陋的历史记录,我只想通过一次合并提交来避免这种历史记录.
如果您在 master 之上重新设置主题,然后将 master 重置为之前的提交并从远程拉取,这样您就会得到以下结果:
o---*---o---o
/ \
o---o---o---*---o---o---+ topic
\
n---n master & origin/master
Run Code Online (Sandbox Code Playgroud)
然后将主题合并到 master 中,结果如下(新的合并提交标记为“#”):
o---*---o----o
/ \
o---o---o---*---o---o----+ topic
\ \
n--n--# master
Run Code Online (Sandbox Code Playgroud)
这会引起冲突吗?它对你有用吗?
| 归档时间: |
|
| 查看次数: |
902 次 |
| 最近记录: |