首页 > 解决方案 > Git LFS 不一致?

问题描述

我最近将一些(二进制)文件(作为 LFS 文件)添加到项目中,所有内容都已提交并从我的家用计算机推送(到 GitLab,不确定是否相关)。我跑在那里git status,发现一切都是最新的。然后我将整个 repo 同步(通过rsyncssh)到另一台机器,但发现那里git status报告文件不同:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   pkg/site-cs/src/cs-dem.grd

并且对于git diff

diff --git a/pkg/site-cs/src/cs-dem.grd b/pkg/site-cs/src/cs-dem.grd
index 9d52a1f..1c86687 100644
Binary files a/pkg/site-cs/src/cs-dem.grd and b/pkg/site-cs/src/cs-dem.grd differ

在文件上运行md5sum会在两台机器上得到相同的结果。如果我跑

git revert pkg/site-cs/src/cs-dem.grd

在远程机器上,则md5sum不再与我家机器上的匹配,但远程机器的 git 报告该文件现在未修改。

我对这种看似不一致的情况感到有些困惑。有没有人有解释(甚至更好,一个修复)。

[编辑]

哦,更奇怪的是,同步后在远程机器上

> ls -l pkg/site-cs/src/cs-dem.grd
-rw-rw-r-- 1 jjg jjg 652304 Jan 13 00:09 pkg/site-cs/src/cs-dem.grd

> hd pkg/site-cs/src/cs-dem.grd | head
00000000  43 44 46 01 00 00 00 00  00 00 00 0a 00 00 00 02  |CDF.............|
00000010  00 00 00 01 78 00 00 00  00 00 01 e1 00 00 00 01  |....x...........|
00000020  79 00 00 00 00 00 01 51  00 00 00 0c 00 00 00 05  |y......Q........|

> git checkout pkg/site-cs/src/cs-dem.grd

> ls -l pkg/site-cs/src/cs-dem.grd
-rw-rw-r-- 1 jjg jjg 131 Jan 15 12:03 pkg/site-cs/src/cs-dem.grd

> cat pkg/site-cs/src/cs-dem.grd
version https://git-lfs.github.com/spec/v1
oid sha256:8ccf1b5183566dd44d05bcec97940bc70c0a7b348a07c2e659c0d64db0db253e
size 652304

这是 LFS 指针文件,现在ls-files错误地报告文件大小。

> git lfs ls-files -d
filepath: pkg/site-cs/src/cs-dem.grd
    size: 652304
checkout: false
download: true
     oid: sha256 8ccf1b5183566dd44d05bcec97940bc70c0a7b348a07c2e659c0d64db0db253e
 version: https://git-lfs.github.com/spec/v1

我发现令人费解的是两个相同的 repo 副本如何表现不同,就好像在它们之外有一些状态。

两台机器git-lsf的路径上都有可执行文件。

标签: gitgitlabgit-lfs

解决方案


推荐阅读