Nästan alla versionskontrollsystem har förgreningsalternativ. Men Git är känt för sina snabba förgreningsfunktioner. Git grenar är lätta. Så prestationsstraffen för förgrening är minimala och utvecklingsteam uppmuntras att förgrena sig och slå ihop så mycket som möjligt. Men när du arbetar med flera grenar är det viktigt att kunna jämföra och kontrastera skillnaderna. I denna handledning kommer vi att gå igenom ett arbetsflöde för att se hur vi kan jämföra olika grenar och åtaganden.Låt oss först ställa in följande situation:
C00 => C01 => C03 => C06 (master)
\
C02 => C04 => C05 (utveckling)
Följande steg togs:
- C00: Lade till hello_world.py (master branch)
- - Skapade utvecklingsgrenen
- C01: Modifierad hello_world.py för att lägga till andra hej (huvudfilial)
- C02: Modifierad hello_world.py för att lägga till utvecklingsgren säger Hello (utvecklingsgren)
- C03: Lagt till readme.txt (huvudfilial)
- C04: Modifierad hello_world.py att lägga till utvecklingsfilial säger Hej igen (utvecklingsfilial)
- C05: Tillagd info.txt (utvecklingsgren)
- C06: Modifierad readme.txt för att lägga till andra raden (huvudgren)
Efter alla åtaganden har "master" -grenen följande filer:
Hej världen.py
readme.Text
Och utvecklingsgrenen har följande filer:
Hej världen.py
info.Text
Jämför huvudet på två grenar
Du kan använda namnet på grenarna för att jämföra huvudet på två grenar:
$ git diff master ... utvecklingdiff --git a / hello_world.py b / hej_värld.py
index e27f806… 3899ed3 100644
--- a / hej_värld.py
+++ b / hej_värld.py
@@ -2,7 +2,7 @@
def huvud ():
skriv ut ("Första hej!")
- skriva ut ("Andra Hej!")
-
+ skriva ut ("Utvecklingsgren säger Hej")
+ skriva ut ("Utvecklingsgrenen säger Hej igen")
om __name__ == "__main__":
huvud ()
diff --git a / info.txt b / info.Text
nytt filläge 100644
index 0000000… 0ab52fd
--- / dev / null
+++ b / info.Text
@@ -0,0 +1 @@
+Ny information
diff --git a / readme.txt b / readme.Text
raderat filläge 100644
index e29c296… 0000000
--- a / readme.Text
+++ / dev / null
@@ -1,2 +0,0 @@
-1 Första raden av readme.Text
-2 Andra raden av readme.Text
Diffkommandot tittar rekursivt på förändringarna. Den har kört följande skillnader:
diff -git a / hello_world.py b / hej_värld.py
diff -git a / info.txt b / info.Text
diff -git a / readme.txt b / readme.Text
Här står 'a' för 'master' -grenen och 'b' för utvecklingsgrenen. 'A' tilldelas alltid den första parametern och 'b' till den andra parametern. / Dev / null betyder att filialen inte har filen.
Jämföra mellan åtaganden
I vårt exempel har "master" -grenen följande åtaganden:
$ git-statusPå filialmästaren
inget att begå, arbetar katalogen ren
$ git log - online
caa0ddd C06: Modifierad readme.txt för att lägga till andra raden (huvudgren)
efaba94 C03: Lagt till readme.txt (huvudfilial)
ee60eac C01: Modifierad hello_world.py för att lägga till andra hej (huvudfilial)
22b4bf9 C00: tillagd hello_world.py (master branch)
Utvecklingsgrenen har följande åtaganden:
$ git-statusOm grenutveckling
inget att begå, arbetar katalogen ren
$ git log - online
df3a4ee C05: Tillagd info.txt (utvecklingsgren)
0f0abb8 C04: Modifierad hello_world.py att lägga till utvecklingsfilial säger Hej igen (utvecklingsfilial)
3f611a0 C02: Modifierad hello_world.py för att lägga till utvecklingsgren säger Hello (utvecklingsgren)
22b4bf9 C00: lagt till hello_world.py (master branch)
Antag att vi vill jämföra hello_world.py för C01 och C02 åtar sig. Du kan använda haschar för att jämföra:
$ git diff ee60eac: hello_world.py 3f611a0: hej_värld.pydiff --git a / ee60eac: hello_world.py b / 3f611a0: hej_värld.py
index e27f806… 72a178d 100644
--- a / ee60eac: hej_värld.py
+++ b / 3f611a0: hej_värld.py
@@ -2,7 +2,7 @@
def huvud ():
skriv ut ("Första hej!")
- skriva ut ("Andra Hej!")
+ skriva ut ("Utvecklingsgren säger Hej")
om __name__ == "__main__":
huvud ()
Du kan använda samma princip för att jämföra åtaganden inom samma gren också.
Visuella sammanfogningsverktyg
Att titta på textbaserade jämförelser kan vara svårt. Om du ställer in Git difftool med en visuell sammanfogningsapplikation som DiffMerge eller BeyondCompare, kommer du att kunna se skillnader bättre.
Ytterligare studier:
- Git Diff-dokumentation
- Git DiffTool-dokumentation
- DiffMerge Setup med DiffTool
- BeyondCompare Setup med DiffTool
Referenser:
- Git Tutorial: Diff and Merge Tools, YouTube
- http: // kodning4streetcred.com / blog / post / configure-diffmerge-for-your-git-difftool
- http: // gitbaby.com / hur-att-diff-en-fil-till-en-godtycklig-version-i-git.html
- https: // git-scm.com / book / en / v2 / Git-Branching-Basic-Branching-and-Merging
- https: // git-scm.com / book / id / v2 / Git-Branching-Branches-in-a-Nutshell
- https: // git-scm.com / docs / git-diff
- https: // git-scm.com / docs / git-difftool
- https: // sourcegear.com / diffmerge /
- https: // sourcegear.com / diffmerge / webhelp / sec__git__linux.html
- https: // stackoverflow.com / frågor / 9834689 / jämför-två-grenar-i-git
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-jämför-filer-med-diff /
- https: // www.scootersoftware.com / funktioner.php
- https: // www.scootersoftware.com / support.php?zz = kb_vcs