我在Ubuntu 14.04 linux上添加了一些二进制文件到git repo,将这些文件推送到GitHub远程,然后将它们拉到现有的克隆在OS X El Capitan和Windows 10上。git status
在OS X和Windows上显示了一些这样的文件,尽管它们还没有被触摸过。即使在git reset --hard
和git checkout
之后,它仍然显示它们已经改变。为什么'git status'显示二进制文件被修改,当它不是和文件模式相同
请注意,我正在使用这些文件的Git LFS(大文件存储)。
这里是git diff
在OS X上的输出,其中只有1文件显示为修改:
Marks-MacBook:KTX mark$ git diff other_lib/linux/Release-x64/libSDL2main.a
diff --git a/other_lib/linux/Release-x64/libSDL2main.a b/other_lib/linux/Release-x64/libSDL2main.a
index 4202f6f..2797199 100644
Binary files a/other_lib/linux/Release-x64/libSDL2main.a and b/other_lib/linux/Release-x64/libSDL2main.a differ
和
Marks-MacBook:KTX mark$ git diff --raw other_lib/linux/Release-x64/libSDL2main.a
:100644 100644 4202f6f... 0000000... M other_lib/linux/Release-x64/libSDL2main.a
的文件被标记为.gitattributes
-text
所以不应该有任何问题与EOL标记。还有什么可能导致不同的sha1结果和git diff报告二进制文件不同?
我添加了一个diff=bin
到.gitattributes
对于其中bin
使用textconv = hexdump -v -C
*.a
文件。在此之后git diff
报告没有区别,但git status
仍显示修改的文件。
作为一项额外的测试,我将原始.a文件从linux复制到OS X,并使用diff将其与我的git工作树中的副本进行比较。它们是相同的。 git status
on linux repo clone报告我复制的工作树文件未修改。
有什么建议吗?
以下情况不再属实;回购已按照我的回答中的描述进行了修正。
你可以自己试试。 repo &分支位于GitHub的https://github.com/KhronosGroup/KTX/tree/incoming。显示OS X上的问题的文件是other_lib/linux/Release-x64/libSDL2main.a
。在other_lib/linux
下的任何其他.a
文件都没有问题。
在Windows上,更多的文件显示为已修改,其中包括一些在Linux上的符号链接。现在我想专注于OS X案例,因为它更简单。
您是否在Mac和Windows主机上正确配置了git-lfs? –
也许这是有关的存取权限: http://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-file-mode-chmod-changes –