Git LFS总是将图像文件显示为已更改?

时间:2015-12-21 12:21:39

标签: git git-lfs

我只是为一个项目设置Git LFS,而对于非图像文件(例如预编译库),它工作得很好。但是,即使我尝试重置(git checkout --)它们,所有.png和.jpg文件也会始终显示为已修改。

.gitattributes中的条目看起来都一样:

*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text

git diff的输出并不是非常有用:

diff --git a/Design/faviconit/favicon.ico b/Design/faviconit/favicon.ico
index 3202014..b5d3daf 100755
Binary files a/Design/faviconit/favicon.ico and b/Design/faviconit/favicon.ico differ

我不确定我应该采取哪些其他措施来诊断问题。有没有其他人遇到这个?有任何想法吗?谢谢!

更新

它实际上不是所有图像文件,只是它们的一部分。但只有图像文件显示问题。

我尝试删除所有有问题的图片并推送该提交。然后在另一台机器上我添加了一些文件并再次推送。当我提取新的更改时,我遇到了同样的问题:文件立即显示为已修改。这些文件在磁盘上看起来是正确的,实际上与原件相同。

2 个答案:

答案 0 :(得分:5)

D'oh ...经过多次检查和检查,并从网络上的各种机器推拉,我们发现在本地工作副本上没有运行git lfs install。所以它推送原始二进制文件而不是LFS文本记录。

要修复它,我们必须运行init命令,然后提交并推送所有损坏的文件(在验证我们已经暂存了LFS文本记录而不是图像本身)。

希望LFS可以在某个时刻捆绑到Git发行版中并避免这个问题。

答案 1 :(得分:0)

我有一个LFS跟踪文件的类似症状总是显示差异。在我的情况下,文件存储在LFS中,但缓存中的文件似乎已损坏。如果你查看.git/lfs/objects/,sha256会存储数据文件。如果你在一个文件上运行sha256sum,它应该具有与它名称相同的哈希值,在我的情况下它们是不同的。

你可以通过运行来解决这个问题: git lfs fsck

E.g。

$ git lfs fsck
Object MYPROBLEMFILE.data (9a963908a9b92d8c955dadbdb191d4d43f22d2a4c0e8dfadf1ce7c265d521f0b) is corrupt
  moved to .git/XXX/lfs/bad/9a963908a9b92d8c955dadbdb191d4d43f22d2a4c0e8dfadf1ce7c265d521f0b
$ git checkout master --force
Already on 'master'
Your branch is up-to-date with 'origin/master'.
$ git lfs fsck
Object MYPROBLEMFILE.data (9a963908a9b92d8c955dadbdb191d4d43f22d2a4c0e8dfadf1ce7c265d521f0b) could not be checked: no such file or directory
$ git lfs pull
Git LFS: (1 of 602 files) 33.72 MB / 74.49 MB                  
$ git lfs fsck
Git LFS fsck OK