GIT beschwert sich über zufällig geänderte Dateien beim Wechseln von Zweigen

8

Ausgehend von

%Vor%

und dann zu einem anderen Zweig wechseln

%Vor%

Nach dem Wechsel zu einem neuen Zweig und dem Ausführen einer git status git wird es gelegentlich über zufällig geänderte Dateien zu Beschwerden kommen. Wenn ich die Dateien mit git diff teile, werden zuerst alle Dateien angezeigt und alle Zeilen werden entfernt und dann wieder hinzugefügt.

%Vor%

Wenn dann git diff --ignore-space-at-eol . ausgeführt wird, werden keine geänderten Dateien angezeigt, was zu der Annahme führt, dass irgendwo innerhalb des Git Repos Probleme mit der Zeilenendung auftreten, wenn ich einen binären Vergleich der Dateien mit meinem Merge-Tool der Wahl (Beyond Compare) anwende sagt mir, dass die Dateien binär gleich sind, obwohl Git sich darüber beschwert, dass sie anders sind, zur Hölle habe ich sogar einen Hexvergleich gemacht und sie waren tatsächlich identisch, also warum sieht Git sie als verändert an?

Das Repository befand sich in einem alten SVN-Repository, das nach den GitHub-Richtlinien Ссылка konvertiert wurde und danach Wir haben unsere Datei .gitattributes der Lösung hinzugefügt, die wie folgt aussieht:

%Vor%

Nachdem wir die Datei .gitattributes hinzugefügt hatten, folgten wir auch githubs guide zum Fixieren von Zeilenenden aus Ссылка

Jeder im Team läuft unter Windows, jeder im Team benutzt core.autocrlf = true und jeder benutzt mindestens

%Vor%

Was könnte hier falsch sein? Die Dateien, über die sich git beschwert, sind völlig zufällig und es passiert für jeden im gesamten Team. Es ist auch unmöglich, die Dateien, über die sie sich beschweren, mit einer git-checkout-Datei rückgängig zu machen, die nicht wirklich geändert wurde.

    
Thomas Schmidt 03.10.2013, 05:56
quelle

2 Antworten

4

Ich hatte das gleiche Problem nach dem Hinzufügen der Standarddatei .gitattributes, die von Visual Studio in meinem Depot generiert wurde. Sie können es beheben, indem Sie die folgende Zeile in .gitattributes auskommentieren:

%Vor%

Übergeben Sie nur diese Datei, und alle anderen fälschlich geänderten Dateien werden nun aus Ihrer Liste der lokalen Änderungen entfernt.

Hinweis: Die Option auto weist git an, alle Dateien mit intern endender LF-Zeile zu speichern. Wenn Sie die Dateien auschecken, werden die Zeilenenden zurück in CRLF konvertiert, so dass Sie dann git diff ausführen. Es sieht Unterschiede zwischen dem LF aus dem Depot und CRLF aus der Checkout-Version. Scheint wie ein Fehler für mich.

    
luwei 17.02.2014 03:57
quelle
0

Mischen Sie nicht ein altes Schema ( core.autocrlf ) und das neue ( .gitattributes ).

Um die problematischen Dateien lokal zu reparieren, können Sie Folgendes tun:

%Vor%     
abyss.7 17.11.2013 15:34
quelle

Tags und Links