6

プロジェクト用に Git LFS をセットアップしましたが、イメージ以外のファイル (プリコンパイル済みライブラリなど) の場合はうまく機能しています。しかし、すべての .png および .jpg ファイルは、リセット ( git checkout --) しようとしても、常に変更されたように表示されます。

のエントリはすべて同じように見えます.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

問題を診断するために他にどのような手順を実行すればよいかわかりません。他の誰かがこれに遭遇しましたか?何か案は?ありがとう!

アップデート:

実際にはすべての画像ファイルではなく、それらのサブセットにすぎません。しかし、画像ファイルだけが問題を示しています。

問題のある画像をすべて削除して、そのコミットをプッシュしてみました。次に、別のマシンで、いくつかのファイルを追加して戻し、再度プッシュしました。新しい変更をプルすると、同じ問題が発生しました。ファイルはすぐに変更済みとして表示されます。ファイルはディスク上で正しいように見え、実際には元のファイルと同じです。

4

2 に答える 2

8

ああ…ネットワーク上のさまざまなマシンから何度もチェックインおよびチェックアウトし、プッシュおよびプルした後git lfs install、ローカルの作業コピーで実行されていないマシンを見つけました。そのため、LFS テキスト レコードの代わりに未加工のバイナリ ファイルをプッシュしていました。

これを修正するには、init コマンドを実行し、破損したすべてのファイルをコミットしてプッシュする必要がありました (イメージ自体ではなく、LFS テキスト レコードをステージングしたことを確認した後)。

うまくいけば、LFS はある時点で Git ディストリビューションにバンドルされ、この問題を回避できます。

于 2015-12-22T12:33:57.677 に答える
-1

LFS 追跡ファイルが常に違いを示すという同様の症状がありました。私の場合、ファイルは LFS に保存されていましたが、キャッシュ内のファイルが破損しているようです。データファイルを見ると.git/lfs/objects/、sha256 によって保存されています。ファイルで実行する場合sha256sum、名前と同じハッシュを持つ必要がありますが、私の場合は異なります。

これを修正するには、次を実行します。 git lfs fsck

例えば

$ 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
于 2016-02-29T01:28:27.217 に答える