У меня есть несколько (двоичных) файлов, которые я недавно добавил (как файлы LFS) в проект, все зафиксировано и отправлено (в GitLab, не уверен, что это актуально) с моей домашней машины. Там я запускаю git status
и вижу, что все обновлено. Затем я синхронизирую c (через rsync
через s sh) весь репо на другой машине, но обнаруживаю, что 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 на удаленном компьютере сообщает, что этот файл теперь не изменен.
Я немного сбит с толку этой кажущейся непоследовательностью. У кого-нибудь есть объяснение (даже лучше, исправление).
[править]
О, даже странно, на удаленной машине после syn c
> 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
Что меня удивляет, так это то, как две идентичные копии репо ведут себя по-разному, как если бы к ним было какое-то внешнее состояние.
На обеих машинах установлен исполняемый файл git-lsf
путь.