【发布时间】:2018-01-24 18:31:17
【问题描述】:
我们最近在尝试合并两个分支时遇到了一个非常奇怪的问题。情况归结为以下几点:
- branch
A是一些长期存在的分支,我们希望合并回主干线B,它还有一些其他提交 - 我们希望将
B合并到A,然后将A合并回B - 在执行
git checkout A; git merge B时,我们会遇到与A引入的更改无关的合并冲突:它们位于一堆文件中,据称A未触及但在B中更改 - 使用
git annotate和git log来跟踪其中一个冲突文件的祖先,我们有效地注意到冲突位置具有共同的提交祖先1234:在A中,一行用1234注释,并且5678在B中,但git annotate file1 5678^显示1234用于冲突行。
我不明白这怎么可能,也找不到任何关于类似问题的线索。
【问题讨论】:
-
git blameakagit annotate必须线性化不可线性化,而git merge(和git merge-base --all)查看实际图形,所以看看@ 987654344@ 产生作为其提交哈希 ID 或 ID。 -
感谢您的提示 :) !我应该说,由此产生的提交以及它的历史都没有什么令人惊讶的。
-
好的 - 好吧,我需要查看更多内容才能了解您为什么会遇到合并冲突。但是你可以通过
git diff --find-renames <base> A和git diff --find-renames <base> B来查看what Git 在声明此冲突时看到的内容。 为什么(就提交而言)更棘手。 -
是的,我知道没有很多细节很难。当然,我不能为闭源软件提供这些。感谢您为提供有意义的答案所做的努力。
标签: git merge version-control