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


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.


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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.