2012-10-13 5 views
23

Ich habe eine Website, die ein Git Repo hat. Ich habe das Repo geklont, so dass ich in einem Verzeichnis entwickeln konnte und dann zum Repo drängen und dann das live/prod Verzeichnis ziehen konnte (wäre an Vorschlägen für einen besseren Weg interessiert, dies zu tun, wenn es einen gibt, aber das ist außerhalb des Umfang dieser Frage).diff komplette Datei für identische Dateien

Ich habe folgend im Live-Verzeichnis all meine neuesten Änderungen drücken:

git add . 
git commit -a // added a message 
git push 

ich folgend im Verzeichnis dev dann tat:

git clone [email protected]:user/repo.git 

ich zwei Dateien dann geöffnet, prod /root/test.php und dev/root/test.php, und sie sahen identisch aus. Allerdings, wenn ich den folgenden Befehl diff tat, ausgegeben es die gesamte Datei:

diff prod/root/test.php dev/root/test.php 

Ich bin so verwirrt, warum diff ausgeben würde, die gesamte Datei, wenn sie identisch ... Ich habe auch versucht, diese googeln und kann niemand anderes mit diesem Problem finden. Vielleicht ist es ein Zeilenende-Problem oder ein Zeichencodierungs-Problem, bei dem sie gleich aussehen, aber sie sind tatsächlich anders und git/bitbucket konvertiert es, wenn Sie auf ihren Repo-Push klicken? Das ist das Einzige, was mir einfällt ... Entweder das oder ich vermisse etwas wirklich Offensichtliches.

Hier ist der Ausgang:

1,3c1,3 
< <? 
< echo '<p>Hello world!</p>'; 
< ?> 
--- 
> <? 
> echo '<p>Hello world!</p>'; 
> ?> 

Antwort

27

Dies scheint ein Problem mit Leerzeichen zu sein, um sie in Zukunft zu vermeiden, können Sie Git einrichten, um sie zu normalisieren.

Windows- und UNIX-System nicht verwenden gleiche Zeilenende, zu verhindern, dass Konflikte aus auf diese Happening basiert, sollten Sie Setup Sie Config git so:

  • Windows-: git config --global core.autocrlf true
  • Unix: git config --global core.autocrlf input

Als nächstes um sicherzustellen, dass wir nur mit idealen Leerzeichen Regeln verpflichten, können Sie diese Konfigurations opti einstellen an:

git config --global core.whitespace trailing-space,space-before-tab,indent-with-non-tab 
2

die in der Regel bedeutet, dass die Zeilenenden unterschiedlich sind. Die meisten Diffin-Programme erlauben es, Unterschiede in Zeilenenden zu ignorieren. Erlaubt Ihnen das, dies zu tun?

12

Wahrscheinlich ist es die Leitungsbeendigung. Versuchen Sie git diff --ignore-space-at-eol. Und für Ebene (nicht git) diff ist es diff -b.

Verwandte Themen