为什么git在两个看似相同的添加文件之间显示冲突?

问题描述 投票:11回答:4

我有一个在TFS中启动的项目,然后移至Git。不幸的是,将其移至Git的人只是签入了当前文件,而不是使用git-tfs。我正在尝试使用git-tfs从TFS提取的提交基础上,在Git中重新建立他的新提交。

为此,我只是在git-tfs提交基础上重新调整他的提交。 (我知道这会弄乱远程的Git分支,但我们的团队很小,没关系。我也尝试过尝试摘樱桃,但遇到了同样的问题。)

我遇到的问题是一系列看起来像这样的冲突:

<<<<<<< HEAD
namespace OurNiftyProject
{
    public enum CardType
    { 
        Visa = 0,
        MasterCard = 1
    }
}
||||||| merged common ancestors
=======
namespace OurNiftyProject
{
    public enum CardType
    { 
        Visa = 0,
        MasterCard = 1
    }
}
>>>>>>> Add a bunch of stuff.

[这似乎是在TFS端添加了这些文件的提交与在Git端添加了这些文件的提交之间的冲突(因为Git存储库开始为空)。

逻辑上可能是跳过此提交,但是其中有一些新文件(例如,数百个文件中有十个)。当然,那些不会引起冲突。

为什么Git不能自己弄清楚两个文件是相同的?即使我在重新设置基准时使用--ignore-whitespace,Git仍会显示许多类似的文件。我不知如何解决此问题。

git git-rebase merge-conflict-resolution git-cherry-pick
4个回答
9
投票

它应该与行尾差异有关,如ebneter注释。很久以前,我已经详细介绍了git merge如何不善于忽略这些差异(与空白差异相反):“ Is it possible for git-merge to ignore line-ending differences?


5
投票

我正在做类似的事情,只是发现“ -X ignore-space-at-eol”。它可用于合并和变基。似乎在做正确的事情,但对我来说却使之死亡缓慢。


1
投票

我刚遇到这个问题,紧接着是这篇文章,以意识到这也是我的行尾场景。


1
投票

如果可以排除由于行尾不同而造成的不可见变化,则可能要检查文件是否具有不同模式(例如,是否设置了可执行位)] >>。文件模式更改时,Git会以差异形式显示完整文件。

© www.soinside.com 2019 - 2024. All rights reserved.