我有一个在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 repo开始为空)。
逻辑上可能是跳过这个提交,但也有一些文件(比如几百个中的十个)是新的。当然,那些不会引起冲突。
为什么Git不能自己弄清楚两个文件是否相同?即使我在改装时使用--ignore-whitespace
,Git仍会显示几十个这样看似相同的文件。我对如何解决这个问题感到茫然。
答案 0 :(得分:9)
应该是关于行结尾的差异,如ebneter评论
很久以前我已经详细介绍了git merge如何不擅长忽略这些差异(而不是空格差异):
“Is it possible for git-merge to ignore line-ending differences?”
这就是为什么异构环境中的存储库需要一致的 eol转换策略。
请参阅“Distributing git configuration with the code”。
答案 1 :(得分:5)
我正在做类似的事情,只是发现了“-X ignore-space-at-eol”。它可用于merge和rebase。似乎正在做正确的事,但对我来说死亡很慢。
答案 2 :(得分:1)
我刚刚碰到这个问题,接着是这篇文章,只是为了意识到这对我来说也是一个行结束的场景。
所以FWIW,这种情况发生在我的情况下,因为我曾经有过“使用Windows样式行结尾”,但在某些时候,对于不同的项目,我将其重新配置为“使用Unix样式行结尾”(这些配置可用)来自Git安装程序)。
返回“使用Windows样式行结尾”解决问题而不使用“--ignore-whitespace”
答案 3 :(得分:1)
如果您可以排除因行结尾不同而导致的不可见更改,您可能需要检查文件是否具有不同的模式(例如,如果设置了可执行位)。当文件模式改变时,Git在diff中显示完整文件。