我有一个master
分支和两个工作分支,a
并且b
。分支b
是从与同一点创建的,a
但是涉及不同的文件(仅一个共享d.py
)。科b
刚被拉进去master
。
(a) F---H-J----L---
/
(master)A--B--C--D--E--------------M
\ /
(b) G----I----K
在我的分支请求请求中,a
Github现在说
该分支存在必须解决的冲突
使用Web编辑器或
commandline
解决冲突。冲突的文件
clippy / d.py
我以为我可以做显而易见的事情,git pull --rebase master
并得到一个看起来像这样的历史:
F---H-J----L--
/
A--B--C--D--E--------------M
\ /
G----I----K
然后合并成主人,一切都会很棒
F---H-J----L
/ \
A--B--C--D--E--------------M--------------N
\ /
G----I----K
当我尝试合并时,这就是我得到的
You are currently rebasing branch 'bug/1500/Things' on '1234567'.
(fix conflicts and then run "git rebase --continue")
(use "git rebase --skip" to skip this patch)
(use "git rebase --abort" to check out the original branch)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: apps/a.py
modified: apps/b.py
modified: apps/c.py
Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: apps/d.py
我认为一切都会很好。但后来我看了看a.py
,并实现了从所有提交我的变化F
,H
,G
和L
已经消失。同样适用于b.py
,c.py
等等。据我所知,卡在rebase中的唯一更改是d.py
两个分支之间共享的文件。我放弃了变基并再次尝试,git rebase master
但发生了同样的事情。
git为什么要这样做?以及如何成功地将提交合并为基础?
如果master和您的a
分支之间存在冲突,则重新定位将在存在冲突的位置停止,并希望您对其进行修复。
首先,可以进入分支的原始状态git rebase --abort
。这将撤消尝试的变基。
如果您仍处于重新部署的中间,则可以git diff
查看冲突的位置。您会在冲突文件中看到类似的内容
<<<<<<< HEAD
...
=======
....
>>>>>>> branch-a
您可以通过选择要保留的代码并删除<<<<
=====
>>>>>>>
行来编辑文件以解决冲突。
完成文件和冲突的编辑后,可以运行git add .
,然后运行git rebase --continue
。重新定位将继续将您的提交上移HEAD
。在任何时候,您可能会或可能不会遇到更多冲突。如果不这样做,您将看到重新建立基础工作成功,然后就可以将更改推送到分支机构。但是,由于已经重新设置了基准,所以您将只能执行强制推送,因为您的提交引用将与远程的提交引用有所不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句