Git diff存在于Windows上的符号链接上,但不存在于FAT文件系统上的Mac上

时间:2014-11-21 10:21:00

标签: xcode windows macos git fat

我有一个FAT外部磁盘,我在其上存储我的GIT存储库,并在Mac和Windows上使用它们。由于FAT没有权限,当我将文件从本地磁盘复制到外部FAT磁盘时,由于文件模式的改变,我有git差异。我用git选项using this解决了这个问题:

git config core.fileMode false

现在在Mac上我没有git diff,即git diff是干净的。但当我继续使用Windows并执行git diff时,我看到了这一点:

enter image description here

我记得在更新Xcode后使用Xcode 6链接我的项目时,我有了进展。我的框架,您在上图中看到的相同框架,在Xcode中的位置,但未被识别和链接。所以我删除了它们重新添加并解决了问题。我想这就是我有差异的原因。这是一个diff的例子:

当时: enter image description here

成为: enter image description here

为什么我在Mac上看不到这种差异?为什么我在iOS框架文件中有差异,diff意味着什么(XSym,数字[0022],哈希码)?

修改: 似乎它与FAT上的符号链接有某种联系:http://www.tucuxi.org/os-x-vfat/但我不确定如何解决我在Windows和Mac上同时使用同一个repo的问题。

1 个答案:

答案 0 :(得分:1)

以下是问题的解释:http://www.tucuxi.org/os-x-vfat/在两个词中,FAT不了解符号链接,因此当您将符号链接复制到FAT时,尝试模仿添加内容提及是上述图像中的差异。

以下是解决方案: https://www.kernel.org/pub/software/scm/git/docs/git-config.html简而言之,git core.symlinks配置应设置为false,以便将符号链接签出为包含链接文本的小型普通文件:

git config core.symlinks false

因此,Mac上的差异也会出现。并且BTW框架文件中的差异使得它们无法在Xcode上工作。

所以通常在FAT上使用GIT我会建议为GIT设置这个全局设置:

git config --global core.fileMode false
git config --global core.symlink false
git config --global core.ignorecase true

使用以下方法检查是否正确设置:

git config -l

它显示了所有继承的值:system,global和local。

重要!即使您使用git config --global core.symlink false,您仍应该为OSX和Windows签出不同的仓库,以便该选项生效。所以,基本上,你的外置硬盘应该有2个回购 - 一个用于OSX,一个用于Windows。否则你仍会得到差异。