Ich habe Daten aus den zurückgegebenen Informationen gesammelt
git diff <commitId>..<commitId>
und ich lief in @@ -1 +1 @@
Ich kann nicht herausfinden, was mir das sagt. Ich habe ein bisschen bei Google gesucht, aber ohne Erfolg.
Ich habe Daten aus den zurückgegebenen Informationen gesammelt
git diff <commitId>..<commitId>
und ich lief in @@ -1 +1 @@
Ich kann nicht herausfinden, was mir das sagt. Ich habe ein bisschen bei Google gesucht, aber ohne Erfolg.
Antworten:
Es ist eine einheitliche Diff-Hunk-Kennung. Dies wird von GNU Diffutils dokumentiert .
Das einheitliche Ausgabeformat beginnt mit einem zweizeiligen Header, der folgendermaßen aussieht:
--- von-Datei von-Datei-Änderungszeit +++ zu-Datei zu-Datei-ÄnderungszeitDer Zeitstempel
2002-02-21 23:30:39.942229878 -0800
zeigt Datum, Uhrzeit in Sekundenbruchteilen und Zeitzone an. Die Bruchsekunden werden auf Hosts weggelassen, die keine Bruchzeitstempel unterstützen.Sie können den Inhalt des Headers mit der
--label=label
Option ändern . Siehe Siehe Alternative Namen .Als nächstes kommen ein oder mehrere Unterschiede; Jedes Stück zeigt einen Bereich, in dem sich die Dateien unterscheiden. Unified Format Hunks sehen folgendermaßen aus:
@@ von-Datei-Zeilennummern zu-Datei-Zeilennummern @@ Zeile-von-jeder-Datei Zeile-von-jeder-Datei ...Wenn ein Stück nur eine Zeile enthält, wird nur seine Startzeilennummer angezeigt. Ansonsten sehen die Zeilennummern so aus . Ein leeres Stück beginnt an der Linie, die dem Stück folgt.
start,count
Wenn ein Stück und sein Kontext zwei oder mehr Zeilen enthalten, sehen seine Zeilennummern so aus . Andernfalls wird nur die Endzeilennummer angezeigt. Es wird davon ausgegangen, dass ein leeres Stück an der Zeile endet, die dem Stück vorausgeht.
start,count
Die beiden Dateien gemeinsamen Zeilen beginnen mit einem Leerzeichen. Die Zeilen, die sich zwischen den beiden Dateien tatsächlich unterscheiden, haben eines der folgenden Kennzeichen in der linken Druckspalte:
- +
Hier wurde der ersten Datei eine Zeile hinzugefügt.- - Hier wurde
eine Zeile aus der ersten Datei entfernt.
Einfache Beispielanalyse
Das Format ist im Grunde das gleiche wie das diff -u
einheitliche Diff.
Zum Beispiel:
diff -u <(seq -w 16) <(seq -w 16 | grep -Ev '^(02|03|14|15)$')
Hier haben wir die Zeilen 2, 3, 14 und 15 entfernt. Ausgabe:
@@ -1,6 +1,4 @@
01
-02
-03
04
05
06
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
@@ -1,6 +1,4 @@
meint:
-1,6
bedeutet, dass dieses Stück der ersten Datei in Zeile 1 beginnt und insgesamt 6 Zeilen zeigt. Daher werden die Zeilen 1 bis 6 angezeigt.
1
2
3
4
5
6
-
bedeutet "alt", wie wir es normalerweise als aufrufen diff -u old new
.
+1,4
bedeutet, dass dieses Stück der zweiten Datei in Zeile 1 beginnt und insgesamt 4 Zeilen anzeigt. Daher werden die Zeilen 1 bis 4 angezeigt.
+
bedeutet "neu".
Wir haben nur 4 statt 6 Zeilen, da 2 Zeilen entfernt wurden! Das neue Stück ist nur:
01
04
05
06
@@ -11,6 +9,4 @@
für das zweite Stück ist analog:
In der alten Datei haben wir 6 Zeilen, beginnend mit Zeile 11 der alten Datei:
11
12
13
14
15
16
In der neuen Datei haben wir 4 Zeilen, beginnend mit Zeile 9 der neuen Datei:
11
12
13
16
Beachten Sie, dass die Zeile 11
die 9. Zeile der neuen Datei ist, da wir bereits 2 Zeilen auf dem vorherigen Hunk entfernt haben: 2 und 3.
Hunk-Header
Je nach Ihrer git - Version und Konfiguration können Sie auch eine Codezeile neben der bekommen @@
Linie, zum Beispiel des func1() {
in:
@@ -4,7 +4,6 @@ func1() {
Dies kann auch mit der -p
Flagge der Ebene erhalten werden diff
.
Beispiel: alte Datei:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
Wenn wir die Linie entfernen 6
, zeigt der Unterschied :
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
Beachten Sie, dass dies nicht die richtige Zeile ist für func1
: Es wurden Zeilen 1
und übersprungen 2
.
Diese großartige Funktion sagt oft genau, zu welcher Funktion oder Klasse jedes Stück gehört, was sehr nützlich ist, um den Unterschied zu interpretieren.
Wie der Algorithmus zur Auswahl des Headers genau funktioniert, wird unter folgender Adresse erläutert: Woher kommt der Auszug im git diff hunk-Header?
@@ -1,6 +1,4 @@
als "Ab Zeile 1 war die alte Zeilenanzahl 6, aber die neue Zeilenanzahl ist 4"
Es sind die aktuellen Informationen zum Hunk-Bereich, die angeben, auf welchen Zeilennummern dieser Diff-Hunk beginnt und endet.
Eine ausführliche Erklärung finden Sie unter http://en.wikipedia.org/wiki/Diff#Unified_format .