我的git项目有两个分支:release和dev。我拍了一张照片来展示结构和我想要的东西。
要将提交号5从dev分支复制到release分支,我在发布分支上做了一个挑选。
当我在发布分支上挑选时,为什么会出现冲突?
Cherry-pick应用提交和共同祖先之间的差异,因此,在这种情况下,共同的祖先是提交号3. Cherry-pick应该在发布分支上的提交3上应用相同的差异。在发布分支上提交3后没有任何内容,所以我不理解冲突。
为了解决冲突,我使用了:
git cherry-pick -X theirs commit5
在发布分支上。
所以我的第二个问题是:为什么发布分支上的commit 5和dev分支上的commit 5之间存在差异?
diff
命令显示了很多差异。使用选项-X theirs
应该应用dev分支提交5的所有更改,不是吗?
答案 0 :(得分:0)
git cherry-pick
,据我所知,只是从提交中获取差异并尝试将其应用于您的文件。这就是为什么会有一些冲突。
关于你问题的第二部分,我并没有真正理解你的意思。这两个提交(让他们称之为5和5')有不同的基础,因此应该是不同的(他们的sha是不同的,他们改变的行是不同的,等等)。 可以应用的所有更改;将适用。如果commit 5对在commit 3中没有出现的文件引入了一些更改,那么这些更改显然不会在commit 5'中传播。这也是为什么尽可能保持提交原则的好主意。