262 Stimmen

Dateien, die direkt nach einem Git-Klon als geändert angezeigt werden

Ich habe gerade ein Problem mit einem Repository, und obwohl ich normalerweise gut mit Git umgehen kann, scheine ich dieses Problem nicht lösen zu können.

Wenn ich dieses Repository klone, dann cd in das Repository, git status zeigt mehrere Dateien als geändert an. Hinweis: Ich habe das Repository nicht in einem Editor oder ähnlichem geöffnet.

Ich habe versucht, diese Anleitung zu befolgen: http://help.github.com/dealing-with-lineendings/ aber das hat bei meinem Problem überhaupt nicht geholfen.

Ich habe versucht git checkout -- . viele Male, aber es scheint nichts zu bewirken.

Ich arbeite mit einem Mac, und im Repository selbst gibt es keine Submodule.

Das Dateisystem ist ein "Journaled HFS+" Dateisystem auf dem Mac und unterscheidet nicht zwischen Groß- und Kleinschreibung. Die Dateien sind einzeilig und jeweils etwa 79 KB groß (ja, Sie haben richtig gehört), so dass ein Blick auf git diff ist nicht besonders hilfreich. Ich habe gehört, dass man git config --global core.trustctime false Das werde ich ausprobieren, sobald ich wieder an meinem Computer mit dem Repository bin.

Ich habe Details des Dateisystems mit Fakten geändert! Und ich versuchte die git config --global core.trustctime false Trick, der nicht sehr gut funktioniert hat.

1voto

8bitme Punkte 817

Ich hatte auch gerade das gleiche Problem. In meinem Fall habe ich das Repository geklont und einige Dateien waren sofort weg.

Der Grund dafür war, dass der Pfad zur Datei und der Dateiname für Windows zu lang waren. Um das Problem zu beheben, klonen Sie das Repository so nah wie möglich an das Festplattenlaufwerk Root, um die Länge des Pfads zur Datei zu reduzieren. Klonen Sie es zum Beispiel nach C:\A\GitRepo anstelle von C:\Users Documents\yyy\Desktop\GitRepo .

0voto

Lanny Punkte 11124

Ich habe festgestellt, dass Git meine Dateien (in diesem Fall .psd) als Text behandelt hat. Die Einstellung auf einen binären Typ in den .gitattributes löste das Problem.

*.psd binary

0voto

Todd Chaffee Punkte 6576

Nur für den Fall, dass es jemand anderem hilft, es kann eine andere Ursache für dieses Problem geben: unterschiedliche Versionen von Git. Ich habe die standardmäßig installierte Version von Git auf einer Ubuntu 18.04 (Bionic Beaver) Box verwendet und alles funktionierte einwandfrei, aber als ich versuchte, das Repository mit Git auf Ubuntu 16.04 zu klonen, wurden einige Dateien als geändert angezeigt.

Keine der anderen Antworten hier hat mein Problem behoben, aber die Aktualisierung der Git-Versionen, damit sie auf beiden Systemen übereinstimmen, hat das Problem behoben.

0voto

Mark Coletti Punkte 115

Ich hatte ein ähnliches Problem unter MacOS.

Das heißt, einige wissen vielleicht nicht, dass das Dateisystem von MacOS zwar Groß- und Kleinschreibung zu unterscheiden scheint, es aber nicht ist. Es speichert Dateinamen mit gemischter Groß- und Kleinschreibung, aber zum Beispiel Foo.py y foo.py die gleiche Datei zu sein.

Ein Kollege hatte genau so ein Szenario geschaffen, indem er eine foo.py von einer Foo.py als Teil eines Entwicklungsgerüsts. (D.h. nicht nur, dass wir die PEP8-Namenskonventionen für Moduldateien durchgesetzt haben, sondern auch, dass wir den Inhalt gegenüber dem Original so stark überarbeitet haben, dass wir diese Art von Arbeit parallel durchführen wollten). Als ich diese Änderungen vornahm, überschrieb MacOS alle Änderungen von foo.py in Foo.py , was dazu führte, dass Git dachte, ich hätte lokale Änderungen vorgenommen, was nicht der Fall war. Bei einem neuen Klon behauptete Git sofort, dass Foo.py hatte erhebliche Änderungen, obwohl es sich um einen neuen Klon handelte.

Die Lösung war die Umbenennung foo.py auf einen völlig anderen Dateinamen, der in keiner Weise mit dem Original in Konflikt steht. Das Problem verschwand nach einem erneuten Klonen des Repositorys, nachdem die Änderung vorgenommen worden war.

(Es gibt ein Systemkonfigurations-Flag, mit dem die Groß- und Kleinschreibung unter MacOS aktiviert werden kann, aber es wird empfohlen, es in der Standardeinstellung zu belassen, da das Umschalten des Verhaltens Dinge kaputt machen kann, die das Verhalten ohne Groß- und Kleinschreibung erwarten).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X