2015-12-21 9 views
6

Ich habe gerade Git LFS für ein Projekt eingerichtet, und für Nicht-Image-Dateien (vorkompilierte Bibliotheken zum Beispiel) funktioniert es großartig. Aber alle .png und .jpg Dateien werden wie immer angezeigt, auch wenn ich versuche, sie zurückzusetzen (git checkout --).Git LFS zeigt immer Bilddateien als geändert an?

Die Einträge sehen alle gleich in .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 

Der Ausgang des git diff nicht sehr nützlich ist:

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 

Ich bin mir nicht sicher, was andere Schritte, die ich ergreifen sollte, um zu diagnostizieren das Problem. Ist jemand anderes dazu gekommen? Irgendwelche Ideen? Vielen Dank!

Updates:

Es ist eigentlich nicht alle die Bilddateien, nur eine Teilmenge von ihnen. Aber nur Bilddateien zeigen das Problem.

Ich habe versucht, alle problematischen Bilder zu entfernen und dieses commit zu drücken. Dann habe ich auf einer anderen Maschine ein paar der Dateien wieder hinzugefügt und erneut gedrückt. Als ich die neuen Änderungen übernommen habe, habe ich das gleiche Problem: Die Dateien werden sofort als geändert angezeigt. Die Dateien sehen auf der Festplatte korrekt aus und sind tatsächlich mit den Originalen identisch.

+0

Haben Sie git-lfs vor dem Hinzufügen der Dateien zu Ihrem Repository oder nach dem Hinzufügen eingerichtet? –

+0

Ich glaube, dass alle diese Dateien im Repository waren, bevor ich LFS eingerichtet habe. – starkos

+0

Eigentlich nein, ich bin zurück gegangen und habe den Verlauf überprüft und einige der Dateien wurden hinzugefügt, nachdem ich LFS eingerichtet habe. – starkos

Antwort

5

D'oh ... nach viel Ein-und Auschecken und Drücken und Ziehen von verschiedenen Maschinen im Netzwerk fanden wir eine, wo git lfs install nicht auf der lokalen Arbeitskopie ausgeführt worden war. Es wurden rohe Binärdateien anstelle der LFS-Textdatensätze übertragen.

Um es zu beheben, mussten wir den Befehl init ausführen und dann alle beschädigten Dateien festschreiben und schieben (nachdem wir überprüft hatten, dass wir die LFS-Textdatensätze und nicht die Bilder selbst inszeniert hatten).

Hoffentlich kann LFS irgendwann in die Git-Distribution gebündelt werden und dieses Problem vermeiden.

0

Ich hatte ähnliche Symptome einer LFS-Tracking-Datei, die immer Unterschiede zeigt. In meinem Fall wurde die Datei in LFS gespeichert, aber die Datei im Cache scheint beschädigt zu sein. Wenn Sie in .git/lfs/objects/ suchen, werden die Datendateien von sha256 gespeichert. Wenn Sie sha256sum in einer Datei ausführen, sollte es denselben Hash wie sein Name haben, in meinem Fall unterschieden sie sich.

Sie können dieses Problem beheben, indem Sie: git lfs fsck

Z.B.

$ 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 
Verwandte Themen