Git vergleicht zwei Branches

Git Compare Two Branches



Fast alle Versionskontrollsysteme haben Verzweigungsoptionen. Git ist jedoch für seine schnellen Verzweigungsfunktionen bekannt. Git Branches sind leichtgewichtig. Daher sind die Leistungseinbußen für das Verzweigen minimal und Entwicklungsteams werden ermutigt, so viel wie möglich zu verzweigen und zusammenzuführen. Wenn Sie jedoch mit mehreren Zweigen arbeiten, ist es wichtig, die Unterschiede vergleichen und gegenüberstellen zu können. In diesem Tutorial werden wir einen Workflow durchlaufen, um zu sehen, wie wir verschiedene Branches und Commits vergleichen können. Lassen Sie uns zunächst die folgende Situation einrichten:

C00 => C01 => C03 => C06 (Master)









C02 => C04 => C05 (Entwicklung)



Folgende Schritte wurden unternommen:





  • C00: hello_world.py (Master-Zweig) hinzugefügt
  • — Erstellt den Entwicklungszweig
  • C01: hello_world.py geändert, um zweites hallo hinzuzufügen (Master-Zweig)
  • C02: hello_world.py geändert, um den Entwicklungszweig hinzuzufügen, sagt Hello (Entwicklungszweig)
  • C03: readme.txt hinzugefügt (Master-Zweig)
  • C04: hello_world.py geändert, um den Entwicklungszweig hinzuzufügen, sagt noch einmal Hallo (Entwicklungszweig)
  • C05: info.txt hinzugefügt (Entwicklungszweig)
  • C06: Readme.txt geändert, um zweite Zeile hinzuzufügen (Master-Zweig)

Nach all den Commits enthält der Zweig ‚master‘ die folgenden Dateien:

hallo_world.py
readme.txt



Und der Zweig 'Entwicklung' enthält die folgenden Dateien:

hallo_world.py
info.txt


Vergleich der Köpfe von zwei Zweigen

Sie können den Namen der Zweige verwenden, um die Köpfe zweier Zweige zu vergleichen:

$git diffMeister..Entwicklung

unterschied --gehenzu/hallo_world.py b/hallo_world.py
Index e27f806..3899ed3100644
---zu/hallo_world.py
+++ b/hallo_world.py
@@-2,7+2,7 @@

def main():
drucken('Erstes Hallo!')
- drucken('Zweites Hallo!')
-
+ drucken(„Entwicklungszweig sagt Hallo“)
+ drucken(„Entwicklungszweig sagt noch einmal Hallo“)
wenn__name__ =='__hauptsächlich__':
hauptsächlich()
unterschied --gehenzu/info.txt b/info.txt
NeuDateiModus100644
Index 0000000..0ab52fd
--- /Entwickler/Null
+++ b/info.txt
@@-0,0+1 @@
+Neue Informationen
unterschied --gehenzu/readme.txt b/readme.txt
gelöschtDateiModus100644
Index e29c296..0000000
---zu/readme.txt
+++/Entwickler/Null
@@-1,2+0,0 @@
-1Erste Zeile der readme.txt
-2Zweite Zeile der readme.txt

Der Befehl diff betrachtet die Änderungen rekursiv. Es hat die folgenden Diffs gelaufen:

diff –git a/hello_world.py b/hello_world.py
diff –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt

Dabei steht „a“ für den „Master“-Zweig und „b“ für den Entwicklungszweig. Das ‚a‘ wird immer dem ersten Parameter und ‚b‘ dem zweiten Parameter zugewiesen. Das /dev/null bedeutet, dass der Zweig die Datei nicht enthält.


Vergleich zwischen Commits

In unserem Beispiel hat der Zweig ‚master‘ die folgenden Commits:

$Git-Status
Auf Zweigmeister
nichts zu begehen, Arbeitsverzeichnis sauber

$git log --eine Linie
caa0ddd C06: Readme.txt geändert, um zweite Zeile hinzuzufügen(Hauptzweig)
efaba94 C03: readme.txt hinzugefügt(Hauptzweig)
ee60eac C01: hello_world.py geändert, um ein zweites hallo hinzuzufügen(Hauptzweig)
22b4bf9 C00: hello_world.py hinzugefügt(Hauptzweig)

Der Entwicklungszweig hat die folgenden Commits:

$Git-Status
Zur Branchenentwicklung
nichts zu begehen, Arbeitsverzeichnis sauber

$git log --eine Linie
df3a4ee C05: info.txt hinzugefügt(Entwicklungszweig)
0f0abb8 C04: hello_world.py geändert, um den Entwicklungszweig hinzuzufügen, sagt noch einmal Hallo(Entwicklungszweig)
3f611a0 C02: hello_world.py geändert, um den Entwicklungszweig hinzuzufügen, sagt Hello(Entwicklungszweig)
22b4bf9 C00: hello_world.py hinzugefügt(Hauptzweig)

Angenommen, wir möchten hello_world.py für C01- und C02-Commits vergleichen. Sie können die Hashes verwenden, um zu vergleichen:

$git diffee60eac:hello_world.py 3f611a0:hello_world.py

unterschied --gehenzu/ee60eac:hello_world.py b/3f611a0:hello_world.py
Index e27f806..72a178d100644
---zu/ee60eac:hello_world.py
+++ b/3f611a0:hello_world.py
@@-2,7+2,7 @@

def main():
drucken('Erstes Hallo!')
- drucken('Zweites Hallo!')
+ drucken(„Entwicklungszweig sagt Hallo“)

wenn__name__ =='__hauptsächlich__':
hauptsächlich()

Sie können das gleiche Prinzip auch verwenden, um Commits innerhalb desselben Branchs zu vergleichen.


Tools zur visuellen Zusammenführung

Textbasierte Vergleiche zu betrachten kann schwierig sein. Wenn Sie Git . einrichten difftool mit einer visuellen Zusammenführungsanwendung wie DiffMerge oder Unvergleichlich , können Sie Unterschiede besser erkennen.

Weitere Studie:

Verweise: