Git报告合并冲突,但无更改,空行(使用git-subtree)

18

我正在测试使用git-subtree将一个库存储库合并到一个更大的项目中。原则上看起来很好用。有时候当我执行“git subtree pull”时,会出现如下的合并冲突:

<<<<<<< HEAD
=======
An inserted line from the lib repo
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

这是因为库存储库中进行了更改,并合并到尚未在本地修改的文件中。或者另一个例子,我在本地项目存储库中添加了一行,但该行位于正在合并的子树的文件中。

<<<<<<< HEAD
Another inserted line
=======
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d
为什么git会将这些报告为合并冲突,但是被报告为冲突的区域是空的?有什么方法可以防止这种情况发生吗?
这些问题很容易解决,但会影响到git-subtree工作流程。

确保所有代码库(Linux、Windows、Mac)的行尾相同。 - knittl
我认为这种情况发生在本地更改的文件修改日期晚于合并版本的日期(第二个示例中)。 - Малъ Скрылевъ
2个回答

3

这不是你根本问题的解决方案,而是对它的缓解。你可以使用 git merge -Xignore-space-change 来忽略提交中的空格更改。

这可能是你行结束符的问题。您可以在合并时尝试 --dry-run 替代方案(git merge 没有 --dry-run 选项):

$git merge -Xignore-space-change --no-commit --no-ff $BRANCH

在实际提交之前查看更改内容。


-3
使用子模块来保存共享的工作。如果您需要协调共享和非共享项目,可以使用 git-slave。这样,您的行尾存储差异将消失。

因为我问如何使用git-subtree而不是如何使用子模块,所以被踩了。并且没有证据表明这与行尾有任何关系。 - Jeremy Slade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接