Git

Git Vergelijk twee takken

Git Vergelijk twee takken

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 instellen:

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

      \

       C02 => C04 => C05 (ontwikkeling)

De volgende stappen zijn genomen:

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

Hallo Wereld.py
Leesmij.tekst

En de tak 'ontwikkeling' heeft de volgende bestanden:

Hallo Wereld.py
info.tekst


De hoofden van twee takken vergelijken

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

$ git diff master… ontwikkeling
diff --git a/hello_world.py b/hello_world.py
index e27f806… 3899ed3 100644
--- a/hallo_wereld.py
+++ b/hallo_wereld.py
@@ -2,7 +2,7 @@
def hoofd():
print("Eerste Hallo!")
- print("Tweede Hallo!")
-
+ print ("Ontwikkelingstak zegt hallo")
+ print("Ontwikkelingstak zegt weer hallo")
if __name__ == "__main__":
hoofd()
diff --git a/info.txt b/info.tekst
nieuwe bestandsmodus 100644
index 0000000… 0ab52fd
--- /dev/null
+++ b/info.tekst
@@ -0,0 +1 @@
+Nieuwe informatie
diff --git a/readme.txt b/leesmij.tekst
verwijderde bestandsmodus 100644
index e29c296… 0000000
--- een/leesmij.tekst
+++ /dev/null
@@ -1,2 +0,0 @@
-1 Eerste regel van readme.tekst
-2 Tweede regel van readme.tekst

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.tekst
diff -git a/readme.txt b/leesmij.tekst

Hier staat 'a' voor de 'master'-tak en 'b' staat 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 'master' branch de volgende commits:

$ git-status
Op branch master
niets te committen, werkmap opschonen
$ git log --oneline
caa0ddd C06: Gewijzigd leesmij.txt om tweede regel toe te voegen (master branch)
efaba94 C03: Leesmij toegevoegd.txt (hoofdtak)
ee60eac C01: Gewijzigd hello_world.py om tweede hallo toe te voegen (master branch)
22b4bf9 C00: Hallo_world toegevoegd Added.py (hoofdtak)

De ontwikkelingstak heeft de volgende commits:

$ git-status
Over brancheontwikkeling
niets te committen, werkmap opschonen
$ git log --oneline
df3a4ee C05: Info toegevoegd.txt (ontwikkelingstak)
0f0abb8 C04: Gewijzigd hello_world.py om Ontwikkelingstak toe te voegen zegt Hallo opnieuw (ontwikkelingstak)
3f611a0 C02: Gewijzigd hello_world.py om Ontwikkelingstak toe te voegen zegt Hallo (ontwikkelingstak)
22b4bf9 C00: Hallo_world toegevoegd Added.py (hoofdtak)

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

$ git diff ee60eac:hello_world.py 3f611a0:hallo_wereld.py
diff --git a/ee60eac:hello_world.py b/3f611a0:hallo_wereld.py
index e27f806… 72a178d 100644
--- a/ee60eac:hallo_wereld.py
+++ b/3f611a0:hallo_wereld.py
@@ -2,7 +2,7 @@
def hoofd():
print("Eerste Hallo!")
- print("Tweede Hallo!")
+ print ("Ontwikkelingstak zegt hallo")
if __name__ == "__main__":
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 je de Git difftool instelt met een visuele samenvoegtoepassing zoals DiffMerge of BeyondCompare, zul je de verschillen beter kunnen zien.

Verdere studie:

Referenties:

Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...
Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...
Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...