Die Bestellung von git diff
Ausgabe wird durch die Reihenfolge der Quellzeilen bestimmt, da es sequenziell arbeitet. So ist die Antwort auf die Frage in der Betreffzeile dieser SO-Posting ("gibt es einen Weg, [die] Zeilen zu bestellen") einfach "nein".
Aber das scheint nicht die Frage , basierend auf Ihrem Beispiel zu sein. (Gut, dass, sofern Sie ein Beispiel!)
Schauen wir uns einige tatsächliche git diff
Ausgabe einen Blick darauf werfen, und wie these two command line argument control knobs beeinflussen es:
-Un
, --unified=n
generieren diffs mit n Linien des Kontexts statt der üblichen drei. Impliziert -p
.
--inter-hunk-context=lines
zeigen den Zusammenhang zwischen diff-große Stücke, bis die festgelegte Anzahl von Zeilen, wodurch große Stücke, Verschmelzen, die einander nahe sind.
Ich habe ein Repository mit nur einer README
Datei erstellt und dann zwei Änderungen daran vorgenommen. Die erste Änderung ist auf der Linie 1 und die zweite ist auf der Linie 9 Hier ist der Standard git diff
Ausgabe:
$ git diff
diff --git a/README b/README
index 441ad85..0e6fd7d 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This is a README file
+This is a README file MOD1
which I am using just
for showing some
cases of using
@@ -6,4 +6,4 @@ git diff with
flags to adjust
the amount of
context that will
-be shown.
+be shown. MOD2
des -U
Lassen verwenden, um die Menge an Kontext von drei Zeilen nur ein bis zu verringern:
$ git diff -U1
diff --git a/README b/README
index 441ad85..0e6fd7d 100644
--- a/README
+++ b/README
@@ -1,2 +1,2 @@
-This is a README file
+This is a README file MOD1
which I am using just
@@ -8,2 +8,2 @@ the amount of
context that will
-be shown.
+be shown. MOD2
Das diff ist kürzer, hat aber immer noch einige Kontext. (Übrigens, es gibt keinen "oben" -Kontext für MOD1
und keinen "unter" -Kontext für MOD2
, da die Datei keine Zeilen über oder unter diesem Punkt hat. Normalerweise wären beide Ausgaben etwas länger, wenn die Datei mehr Text hätte Wir hätten drei Zeilen Kontext über Zeile 1 und drei Zeilen unter Zeile 9 im ersten Vergleich, wenn diese verfügbar wären: Wir hätten 1 Zeile über Zeile 1 und 1 Zeile unter Zeile 9 in der zweiten.)
die Linien-of-context Erhöhung hat den Nebeneffekt die Differentiale des Verschmelzens:
$ git diff -U4
diff --git a/README b/README
index 441ad85..0e6fd7d 100644
--- a/README
+++ b/README
@@ -1,9 +1,9 @@
-This is a README file
+This is a README file MOD1
which I am using just
for showing some
cases of using
git diff with
flags to adjust
the amount of
context that will
-be shown.
+be shown. MOD2
Dies liegt daran, mit 4 Zeilen des diff HUNK unterhalb der Änderungs Kontextes auf der Linie 1 zeigt den Zeilen 1 bis einschließlich 5; mit 4 Zeilen Kontext über der Änderung auf Zeile 9; Das Diff-Hunk zeigt die Zeilen 5 bis einschließlich 9. Zeile 5 und Zeile 5 sind gleich, also werden die beiden Kerben verschmolzen.
Oder auch wenn -U1
oder etwas verrückt -U0
(kein Kontext überhaupt) verwendet wird, kann ich --inter-hunk-context
verwenden zusätzliche Kontext zwischen der ersten und zweiten diff großes Stück an, bis zu dem Punkt, wo sie beitreten. Mit -U1
benötige ich --inter-hunk-context=5
, um irgendeinen Effekt zu erhalten.
$ git diff -U1 --inter-hunk-context=5
diff --git a/README b/README
index 441ad85..0e6fd7d 100644
--- a/README
+++ b/README
@@ -1,9 +1,9 @@
-This is a README file
+This is a README file MOD1
which I am using just
for showing some
cases of using
git diff with
flags to adjust
the amount of
context that will
-be shown.
+be shown. MOD2
Diesmal zeigt die erste HUNK Zeilen 1 bis 2, und die zweiten Linien zeigen 8 bis 9. Wir fügen 5 mehr Zeilen-4, die Linien 3, sind, 5, 6, und 7-und jetzt die zwei Kerben grenzen an und werden in ein diff-Stück verschmolzen.
Unter Verwendung von -U0
benötigen wir --inter-hunk-context=7
, da die Basis-Diff-Hunks nur für Zeile 1 und Zeile 9 gelten, und wir müssen Zeilen 2 bis 8 (7 Zeilen) hinzufügen, damit sie sich verbinden.
Es gibt eine weitere relevante Option, die Sie verwenden können:
-W
, --function-context
anzeigen ganze Funktionen von Änderungen umgibt.
Für diese besondere README
Datei, die Klartext-Englisch enthält, ist diese Option nicht sinnvoll, da es keine „Funktionen“ in einer solchen Datei sind. Ob -W
funktioniert, hängt von der Sprache der Datei ab und ob Git Funktionen erkennen kann, die in dieser Sprache geschrieben sind.