So vergleichen Sie zwei Dateien, die nicht im Repo enthalten sind, mit git

113

Ich möchte zwei CSS-Dateien vergleichen, die sich in keinem Git-Repository befinden. Gibt es eine solche Funktionalität in Git?

Cedric Reichenbach
quelle
Was wäre, wenn ich beispielsweise die --patienceFlagge verwenden wollte? Kennen Sie einen Diff (1) , der das kann?
SamB
Sie sollten Kyle Burtons Antwort akzeptieren.
BrodieG

Antworten:

214

gitDas Diff ist funktionaler als das Standard-Unix diff. Ich möchte dies oft tun und da diese Frage bei Google einen hohen Stellenwert hat, möchte ich, dass diese Antwort angezeigt wird.

Diese Frage: Wie verwende git diff --color-wordsich außerhalb eines Git-Repositorys?

Zeigt, wie Sie git verwenden, um Dateien zu unterscheiden, bei denen sich mindestens eine davon nicht im Repository befindet. Verwenden Sie dazu --no-index:

git diff --no-index file1.txt file2.txt

Es spielt keine Rolle, welches von git verfolgt wird und welches nicht - eines oder beide können nicht verfolgt werden, z.

$ date > x
$ sleep 2
$ date > y
$ git diff --color-words --no-index x y
diff --git a/x b/y
index 6b10c7c..70f036c 100644
--- a/x
+++ a/y
@@ -1 + 1 @@
Wed Jun 10 10:57:45|10:57:47 EDT 2013

Die Farbe kann hier nicht angezeigt werden, daher habe ich die Änderungen im Beispiel durch eine Pipe getrennt.

Kyle Burton
quelle
14
Wenn Sie dieses Verhalten als Standard festlegen möchten, können Sie Ihrer .bashrcDatei (oder was auch immer Sie verwenden) einen Alias ​​hinzufügen :alias diff="git diff --no-index"
Counterbeing
1
Zu Ihrer Information: Unter Git für Windows gab es einen Fehler (# 2123), dass "--no-index" nicht beachtet wurde. Dies wurde in Git für Windows v2.21.0 (26. Februar 2019) behoben.
StackzOfZtuff
Was bedeutet Zeile "Index 6b10c7c..70f036c 100644"? Ich vergleiche 2 Binärdateien, sie unterscheiden sich, aber das ist die einzige Zeile mit Unterschied ...
Lukas Salich
hi @LukasSalich es sieht so aus, als ob das Zeilenformat von git dokumentiert werden könnte (zB: git-scm.com/docs/diff-format ) , die beiden SHAs, bei denen eine Änderung festgestellt wurde, und dann die Berechtigungen der Datei.
Kyle Burton
3

diff -u

gibt gits diff eine ähnliche einheitliche Kontextausgabe.

James
quelle
1
Es macht jedoch keine schöne Färbung oder verwendet einen Pager.
Xiong Chiamiov
Es erlaubt auch kein schönes Wort diff ( git diff --word-diff).
Stefan van den Akker
0

Verwenden Sie einfach den Befehl diff:

diff file1.ext file2.ext
edwardmp
quelle
2
Hmkay, ich habe es versucht, aber meiner Meinung nach war die Ausgabe nur Unsinn ... Vielleicht habe ich mich geirrt ...
Cedric Reichenbach
Sie können ein GUI-Tool ausführen, das eine bessere Ansicht bietet, wie z. B. gvimdiff, kompare oder ähnliches
Eugene Sajine