Git Vergelijk twee takken

Git Compare Two Branches



Bijna alle versiebeheersystemen hebben vertakkingsopties. Maar Git staat bekend om zijn snelle vertakkingsmogelijkheden. Git-takken zijn lichtgewicht. Dus de prestatiestraffen voor vertakking zijn minimaal en ontwikkelteams worden aangemoedigd om zoveel mogelijk te vertakken en samen te voegen. Maar als je met meerdere vestigingen werkt, is het belangrijk om de verschillen te kunnen vergelijken en contrasteren. In deze tutorial zullen we een workflow doorlopen om te zien hoe we verschillende branches en commits kunnen vergelijken. Laten we eerst de volgende situatie opzetten:

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









C02 => C04 => C05 (ontwikkeling)



De volgende stappen zijn genomen:





  • C00: Hallo_world.py toegevoegd (master branch)
  • — De ontwikkelingstak gemaakt
  • C01: hello_world.py aangepast om tweede hallo toe te voegen (master branch)
  • C02: hello_world.py gewijzigd om de ontwikkelingstak toe te voegen zegt Hallo (ontwikkelingstak)
  • C03: readme.txt toegevoegd (master branch)
  • C04: Hallo_world.py gewijzigd om de ontwikkelingstak toe te voegen, zegt nogmaals Hallo (ontwikkelingstak)
  • C05: Info.txt toegevoegd (ontwikkelingstak)
  • C06: Readme.txt gewijzigd om tweede regel toe te voegen (master branch)

Na alle commits heeft de 'master' branch de volgende bestanden:

hallo_world.py
leesmij.txt



En de tak 'ontwikkeling' heeft de volgende bestanden:

hallo_world.py
info.txt


De hoofden van twee takken vergelijken

Je kunt de naam van de takken gebruiken om de koppen van twee takken te vergelijken:

$git verschilmeester..ontwikkeling

verschil --Gaantot/hallo_world.py b/hallo_world.py
index e27f806..3899ed3100644
---tot/hallo_world.py
+++ b/hallo_world.py
@@-2,7+2,7 @@

def belangrijkste():
afdrukken('Eerst Hallo!')
- afdrukken('Tweede Hallo!')
-
+ afdrukken('Ontwikkelingstak zegt hallo')
+ afdrukken('Ontwikkelingstak zegt weer hallo')
indien__naam__ =='__hoofd__':
hoofd()
verschil --Gaantot/info.txt b/info.txt
nieuwehet dossiermodus100644
index 000000..0ab52fd
--- /dev/nul
+++ b/info.txt
@@-0,0+1 @@
+Nieuwe informatie
verschil --Gaantot/leesmij.txt b/leesmij.txt
verwijderdhet dossiermodus100644
index e29c296..0000000
---tot/leesmij.txt
+++/dev/nul
@@-1,2+0,0 @@
-1Eerste regel van readme.txt
-2Tweede regel van readme.txt

Het diff-commando kijkt recursief naar de wijzigingen. Het heeft de volgende diffs uitgevoerd:

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

Hier staat 'a' voor de 'master'-tak en 'b' voor de ontwikkelingstak. De 'a' wordt altijd toegewezen aan de eerste parameter en 'b' aan de tweede parameter. De /dev/null betekent dat de branch het bestand niet heeft.


Vergelijken tussen commits

In ons voorbeeld heeft de branch ‘master’ de volgende commits:

$git-status
Op branch master
niets te committen, werkmap opschonen

$git log --oneline
caa0ddd C06: Readme.txt gewijzigd om tweede regel toe te voegen(hoofdtak)
efaba94 C03: readme.txt toegevoegd(hoofdtak)
ee60eac C01: Hallo_world.py gewijzigd om tweede hallo toe te voegen(hoofdtak)
22b4bf9 C00: Hallo_world.py toegevoegd(hoofdtak)

De ontwikkelingstak heeft de volgende commits:

$git-status
Over brancheontwikkeling
niets te committen, werkmap opschonen

$git log --oneline
df3a4ee C05: Info.txt toegevoegd(ontwikkelingstak)
0f0abb8 C04: Hallo_world.py gewijzigd om de ontwikkelingstak toe te voegen, zegt nogmaals Hallo(ontwikkelingstak)
3f611a0 C02: Hallo_world.py gewijzigd om de ontwikkelingstak toe te voegen, zegt Hallo(ontwikkelingstak)
22b4bf9 C00: Hallo_world.py toegevoegd(hoofdtak)

Stel dat we de hello_world.py voor C01- en C02-commits willen vergelijken. U kunt de hashes gebruiken om te vergelijken:

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

verschil --Gaantot/ee60eac:hello_world.py b/3f611a0:hallo_wereld.py
index e27f806..72a178d100644
---tot/ee60eac:hello_world.py
+++ b/3f611a0:hallo_wereld.py
@@-2,7+2,7 @@

def belangrijkste():
afdrukken('Eerst Hallo!')
- afdrukken('Tweede Hallo!')
+ afdrukken('Ontwikkelingstak zegt hallo')

indien__naam__ =='__hoofd__':
hoofd()

Je kunt hetzelfde principe ook gebruiken om commits binnen dezelfde branch te vergelijken.


Hulpmiddelen voor visuele samenvoeging

Kijken naar op tekst gebaseerde vergelijkingen kan moeilijk zijn. Als u de Git . instelt difftool met een visuele samenvoegtoepassing zoals DiffSamenvoegen of Niet te vergelijken , zult u de verschillen beter kunnen zien.

Verdere studie:

Referenties: