在my_branch
上重新定位other_branch
时,即:
git rebase other_branch
如果有冲突,我会得到标记
<<<<<<< HEAD
stuff_1
=====
stuff_2
>>>>>>> Some commit message
Q1 第一个问题:stuff_1
来自my_branch
还是来自other_branch
?
我还注意到,当发生这种情况时,我的HEAD
现在指向一些未命名的提交,在我的情况下65c47727a2500691233cfed2a2cfe7686b7fb92d
(这是cat .git/HEAD
的输出)
我也得到:
> git status
rebase in progress; onto e41e19d
You are currently rebasing branch 'my_branch" on 'e41e19d'
...
Unmerged paths:
both added: some_file.sh
Q2 当我修复rebase时,为什么我的HEAD
指向某个随机提交?
第3季度 Unmerged paths
和both added
在此背景下的含义是什么?
答案 0 :(得分:4)
在变基过程开始时,HEAD
设置为other_branch
。 That is documented。然后,逐个重新应用other_branch..my_branch
的所有提交。该迭代过程可能在某些时候失败,然后您必须解决合并冲突,并在解决冲突后执行git rebase --continue
。
回答Q2:在解决冲突时,您的HEAD
指向与上次成功应用的other_branch..my_branch
提交相对应的提交。你可以使用git show
进行识别,但当然它的哈希是不同的,因为它的父母是不同的。
回答Q1: stuff_1
来自HEAD
。鉴于我在Q2的答案中所说的,这意味着它来自other_branch
的修改版本,其中my_branch
的提交可能已经应用。
回答Q3: 未合并路径表示仍有未解决的冲突。似乎my_branch
和other_branch
都添加了新文件some_file.sh
。请参阅问题&#34; Resolving a 'both added' merge conflict in git?&#34;如何解决这一冲突。解决冲突后(在此处修复some_file.sh
),一旦修复完毕,就会执行git add some_file.sh
和git rebase --continue
。 git-rebase
将提交当前更改,并继续进行基础设置。