gpt4 book ai didi

git - 为什么 'git status' 将二进制文件显示为已修改,而文件模式是相同的

转载 作者:太空狗 更新时间:2023-10-29 13:23:07 25 4
gpt4 key购买 nike

我在 Ubuntu 14.04 linux 上将一些二进制文件添加到 git 存储库,将这些文件推送到 GitHub 远程,然后将它们 pull 到 OS X El Capitan 和 Windows 10 上的现有克隆。操作系统上的 git status X 和 Windows 将其中一些文件显示为已修改,即使它们没有被修改过。即使在 git reset --hardgit checkout 之后,它仍会继续显示它们已更改。

请注意,我对这些文件使用 Git LFS(大型文件存储)。

这是 OS X 上 git diff 的输出,其中只有 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 报告二进制文件不同?

我为 *.a 文件添加了一个 diff=bin.gitattributes,其中 bin 使用 textconv = hexdump -v -C。之后 git diff 报告没有差异,但 git status 仍然显示文件已修改。

作为附加测试,我将原始的 .a 文件从 Linux 复制到 OS X,并使用 diff 将其与我的 git 工作树中的副本进行比较。它们是相同的。 linux repo clone 上的 git status 报告我复制的工作树文件未修改。

有什么建议吗?

以下不再正确; repo 已按照我的回答中的描述进行修复。

你可以自己试试。 repo 和分支在 GitHub 上 https://github.com/KhronosGroup/KTX/tree/incoming .在 OS X 上显示问题的文件是 other_lib/linux/Release-x64/libSDL2main.aother_lib/linux下的其他.a文件都没有问题。

在 Windows 上,还有一些文件显示为已修改,包括一些在 Linux 上是符号链接(symbolic link)的文件。我现在想专注于 OS X 案例,因为它更简单。

最佳答案

我发现了问题。它与 Linux 主机上的配置有关。感谢Edward Thomson提示我查看 git-lfs 配置。

在 Linux 主机上运行 git lfs init,删除二进制文件并将其重新添加到那里的存储库并推送到远程已解决问题。要将更新 pull 到 OS X 和 Windows 主机,我必须在它们上运行 git reset --hard 以重置回没有违规文件的提交。

我没有运行 git lfs init,我认为这一步将是 apt-get install 运行的脚本的一部分。这意味着文件实际上并未存储在 LFS 中,因为 Linux 主机上的污迹和清洁过滤器是无操作的,但 .gitattributes 文件导致 OS X 和 Windows 主机运行 checkout 时使用 LFS 污迹过滤器。

关于git - 为什么 'git status' 将二进制文件显示为已修改,而文件模式是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com