git报告合并冲突,无更改,空行(使用git子树)

git报告合并冲突,无更改,空行(使用git子树),git,subtree,git-subtree,Git,Subtree,Git Subtree,我正在测试如何使用将图书馆回购合并到一个更大的项目中。这在原则上似乎很好。有时,当我执行“git子树拉”时,会出现如下合并冲突: <<<<<<< HEAD ======= An inserted line from the lib repo >>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d >4D34890349EBB584AB224CB34C6038FBF6B3

我正在测试如何使用将图书馆回购合并到一个更大的项目中。这在原则上似乎很好。有时,当我执行“git子树拉”时,会出现如下合并冲突:

<<<<<<< HEAD
=======
An inserted line from the lib repo
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d
>4D34890349EBB584AB224CB34C6038FBF6B352D
这是针对库repo中所做的更改,合并到未在本地修改的文件中。或者另一个例子,我在本地项目回购中添加了一行,但在作为合并子树一部分的文件中:

<<<<<<< HEAD
Another inserted line
=======
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d
>4D34890349EBB584AB224CB34C6038FBF6B352D
为什么git将这些报告为合并冲突,而报告为冲突的区域为空?有什么办法预防吗


这些问题很容易解决,但它会打乱git子树工作流

使用子模块来保存共享工作。如果您对需要协调的共享和非共享项目做了大量工作,那么就有git slave。您的行尾存储差异将消失。

这不是根本问题的解决方案,而是它的缓解。您可以使用
git合并-Xignore空间更改
忽略提交中的空间更改

这可能是你的行尾有问题。您可以在merge中尝试一个
--dry run
选项(
git merge
没有
--dry run
选项):

$git merge-Xignore空间更改--无提交--无ff$分支


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

确保所有存储库(Linux、Windows、Mac)上的行尾都相同。我认为(在第二个示例中)当本地更改的文件的修改日期晚于合并版本的修改日期时,就会发生这种情况。我投了反对票,因为我询问了使用git子树的问题,不是如何使用子模块。没有证据表明这和行尾有关