2013-10-03 16 views
8

AbGIT beschwert sich über zufällig geänderten Dateien, wenn Zweige

git status 
# On branch master 
nothing to commit, working directory clean 

Schalten und dann zu einem anderen Zweig Schalt

git checkout somebranch 

nach zu einem neuen Zweig Schalten und ein git status git laufen wird manchmal über zufällig klagen geänderte Dateien Wenn ich die Dateien mit git diff diff wird es die ganzen Dateien angezeigt wird zuerst mit allen Linien entfernt werden und dann wieder hinzugefügt

- someline 
- someotherline 
+ someline 
+ someotherline 

Dann wird ein git diff --ignore-space-at-eol . läuft keine Dateien zeigen verän führt mich zu glauben, dass Linie Fragen endet irgendwo in dem Git Repo, denn wenn ich einen binären Vergleich der Dateien mit meinem Merge-Tool der Wahl (Beyond Compare) es mir sagt, dass die Dateien binär gleich sind, obwohl Git beschwert sich über sie anders, Hölle habe ich sogar einen Hex vergleichen und sie waren tatsächlich identisch, also warum sieht git sie als verändert an?

Das Repository wurde auf alte SVN-Repository, das durch Befolgen der Github Richtlinien https://help.github.com/articles/importing-from-subversion und danach umgewandelt haben wir unser .gitattributes zur Lösung Datei, die wie folgt aussieht:

# .gitattributes 
# Auto detect text files and perform LF normalization 
* text=auto 

# Custom for Visual Studio 
*.cs  diff=csharp 
*.sln merge=union 
*.csproj merge=union 
*.vbproj merge=union 
*.fsproj merge=union 
*.dbproj merge=union 

# Standard to msysgit 
*.doc diff=astextplain 
*.DOC diff=astextplain 
*.docx diff=astextplain 
*.DOCX diff=astextplain 
*.dot diff=astextplain 
*.DOT diff=astextplain 
*.pdf diff=astextplain 
*.PDF diff=astextplain 
*.rtf diff=astextplain 
*.RTF diff=astextplain 

Nach dem Hinzufügen der Datei .gitattributes wir folgten auch githubs Anleitung zur Befestigung Zeilenenden von https://help.github.com/articles/dealing-with-line-endings

jeder im Team auf Windows läuft, jeder im Team ist mit core.autocrlf = true und jeder ist mit mindestens

git --version 
git version 1.8.3.msysgit.0 

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 sich nicht wirklich geändert hat.

Antwort

0

Zunächst einmal nicht ein altes Schema (core.autocrlf) und das neue (.gitattributes) mischen.

die problematischen Dateien lokal beheben Sie folgendes tun:

git rm --cached -r . 
git reset --hard 
+1

'.gitattributes' sollte überschreiben, was auch immer die Entwickler in' core.autocrlf' gesetzt haben, deshalb verwenden wir .gitattributes an erster Stelle. Wir haben die Korrekturen, die Sie vorgeschlagen haben, bereits durchgeführt, indem Sie dem Link zu github i in der Frage gefolgt sind, aber wir sehen immer noch die Probleme. –

4

Ich hatte das gleiche Problem nach der Standard .gitattributes Datei von Visual Studio in meinem Depot generierte hinzufügen. Sie können das Problem beheben, indem Sie die folgende Zeile in .gitattributes Kommentierung aus:

# * text=auto 

diese Datei Commit nur und all die anderen unechten geänderte Dateien werden nun aus der Liste der lokalen Änderungen verschwinden.

Hinweis: Die Option auto weist git an, alle Dateien mit intern endender LF-Leitung 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 mir wie ein Käfer.

Verwandte Themen