Git Jämför två grenar

Git Compare Two Branches



Nästan alla versionskontrollsystem har förgreningsalternativ. Men Git är känt för sina snabba förgreningsmöjligheter. Git -grenar är lätta. Så prestationspåföljderna för förgreningar ä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: Lagt till hello_world.py (huvudgren)
  • - Skapade utvecklingsgrenen
  • C01: Modifierad hello_world.py för att lägga till andra hej (huvudgren)
  • C02: Modifierad hello_world.py för att lägga till utvecklingsgren säger Hej (utvecklingsgren)
  • C03: Tillagd readme.txt (huvudgren)
  • C04: Modifierad hello_world.py för att lägga till Development branch säger Hej igen (utvecklingsgren)
  • C05: Lade till info.txt (utvecklingsgren)
  • C06: Ändrad readme.txt för att lägga till andra raden (huvudgren)

Efter alla åtaganden har 'master' -grenen följande filer:

hej_värld.py
readme.txt



Och 'utvecklings' -grenen har följande filer:

hej_värld.py
info.txt


Jämför huvudet på två grenar

Du kan använda grenarnas namn för att jämföra huvuden på två grenar:

$git diffmästare..utveckling

diff --gåtill/hello_world.py b/hej_värld.py
index e27f806..3899ed3100644
---till/hej_värld.py
+++ b/hej_värld.py
@@-2,7+2,7 @@

def main():
skriva ut('Första Hej!')
- skriva ut('Andra Hallå!')
-
+ skriva ut('Utvecklingsgren säger hej')
+ skriva ut('Utvecklingsgren säger hej igen')
om__namn__ =='__huvud__':
huvud()
diff --gåtill/info.txt b/info.txt
nyfilläge100644
index 0000000..0ab52fd
--- /dev/null
+++ b/info.txt
@@-0,0+1 @@
+Ny information
diff --gåtill/readme.txt b/readme.txt
raderadefilläge100644
index e29c296..0000000
---till/readme.txt
+++/dev/null
@@-1,2+0,0 @@
-1Första raden i readme.txt
-2Andra raden i readme.txt

Diff -kommandot tittar rekursivt på ändringarna. Det har kört följande skillnader:

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

Här står 'a' för 'master' -grenen och 'b' står 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örelse mellan åtaganden

I vårt exempel har 'master' -grenen följande åtaganden:

$git -status
På filialmästare
inget att göra, arbetskatalogen ren

$git -logg --en linje
caa0ddd C06: Ändrad readme.txt för att lägga till andra raden(huvudgren)
efaba94 C03: Tillagd readme.txt(huvudgren)
ee60eac C01: Ändrad hello_world.py för att lägga till andra hej(huvudgren)
22b4bf9 C00: Tillagd hello_world.py(huvudgren)

Utvecklingsgrenen har följande åtaganden:

$git -status
Om filialutveckling
inget att göra, arbetskatalogen ren

$git -logg --en linje
df3a4ee C05: Tillagd info.txt(utvecklingsgren)
0f0abb8 C04: Ändrad hello_world.py för att lägga till Development branch säger Hej igen(utvecklingsgren)
3f611a0 C02: Ändrad hello_world.py för att lägga till Development branch säger Hej(utvecklingsgren)
22b4bf9 C00: Tillagd hello_world.py(huvudgren)

Antag att vi vill jämföra hello_world.py för C01- och C02 -åtaganden. Du kan använda hash för att jämföra:

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

diff --gåtill/ee60eac: hello_world.py b/3f611a0: hello_world.py
index e27f806..72a178d100644
---till/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@

def main():
skriva ut('Första Hej!')
- skriva ut('Andra Hallå!')
+ skriva ut('Utvecklingsgren säger hej')

om__namn__ =='__huvud__':
huvud()

Du kan använda samma princip för att jämföra åtaganden inom samma gren också.


Visual Merge -verktyg

Att titta på textbaserade jämförelser kan vara svårt. Om du ställer in Git difftool med en visuell kopplingsapplikation som DiffMerge eller BeyondCompare , kommer du att kunna se skillnader bättre.

Ytterligare studier:

Referenser: