Nesten alle versjonskontrollsystemer har forgreningsalternativer. Men Git er kjent for sine raske forgreningsegenskaper. Git grenene er lette. Så ytelsesstraffene for forgrening er minimale, og utviklingsteamene oppfordres til å forgrene seg og slå sammen så mye som mulig. Men når du jobber med flere grener, er det viktig å kunne sammenligne og kontrastere forskjellene. I denne opplæringen vil vi gå gjennom en arbeidsflyt for å se hvordan vi kan sammenligne ulike grener og forpliktelser.La oss først sette opp følgende situasjon:
C00 => C01 => C03 => C06 (master)
\
C02 => C04 => C05 (utvikling)
Følgende trinn ble tatt:
- C00: Lagt til hello_world.py (master gren)
- - Laget utviklingsgrenen
- C01: Modifisert hello_world.py for å legge til andre hei (master branch)
- C02: Modifisert hello_world.py for å legge til Utviklingsgren sier Hello (utviklingsgren)
- C03: Lagt til readme.txt (hovedfilial)
- C04: Modifisert hello_world.py for å legge til Utviklingsgren sier Hei igjen (utviklingsgren)
- C05: Lagt til info.txt (utviklingsgren)
- C06: Modifisert readme.txt for å legge til andre linje (hovedgren)
Etter alle forpliktelsene har 'master' -grenen følgende filer:
Hei Verden.py
readme.tekst
Og utviklingsgrenen har følgende filer:
Hei Verden.py
info.tekst
Sammenligning av hodene til to grener
Du kan bruke navnet på grenene for å sammenligne hodene til to grener:
$ git diff master ... utviklingdiff --git a / hallo_verden.py b / hallo_verden.py
indeks e27f806… 3899ed3 100644
--- a / hallo_verden.py
+++ b / hallo_verden.py
@@ -2,7 +2,7 @@
def main ():
print ("Først Hei!")
- print ("Second Hello."!")
-
+ print ("Utviklingsgrenen sier Hei")
+ print ("Utviklingsgrenen sier Hei igjen")
hvis __name__ == "__main__":
hoved()
diff --git a / info.txt b / info.tekst
ny filmodus 100644
indeks 0000000… 0ab52fd
--- / dev / null
+++ b / info.tekst
@@ -0,0 +1 @@
+Ny informasjon
diff --git a / readme.txt b / readme.tekst
slettet filmodus 100644
indeks e29c296… 0000000
--- a / readme.tekst
+++ / dev / null
@@ -1,2 +0,0 @@
-1 Første linje av readme.tekst
-2 Andre linje med readme.tekst
Diff-kommandoen ser rekursivt på endringene. Den har kjørt følgende forskjeller:
diff -git a / hallo_verden.py b / hallo_verden.py
diff -git a / info.txt b / info.tekst
diff -git a / readme.txt b / readme.tekst
Her står 'a' for 'master' -grenen og 'b' for utviklingsgrenen. 'A' tildeles alltid den første parameteren og 'b' til den andre parameteren. / Dev / null betyr at grenen ikke har filen.
Sammenligning mellom forpliktelser
I vårt eksempel har 'master' -grenen følgende forpliktelser:
$ git-statusPå grenmester
ingenting å begå, arbeider katalogen ren
$ git log --online
caa0ddd C06: Modifisert readme.txt for å legge til andre linje (hovedgren)
efaba94 C03: Lagt til readme.txt (hovedfilial)
ee60eac C01: Modifisert hello_world.py for å legge til andre hei (master branch)
22b4bf9 C00: lagt til hello_world.py (master gren)
Utviklingsgrenen har følgende forpliktelser:
$ git-statusOm grenutvikling
ingenting å begå, arbeider katalogen ren
$ git log --online
df3a4ee C05: Lagt til info.txt (utviklingsgren)
0f0abb8 C04: Modifisert hello_world.py for å legge til Utviklingsgren sier Hei igjen (utviklingsgren)
3f611a0 C02: Modifisert hello_world.py for å legge til Utviklingsgren sier Hello (utviklingsgren)
22b4bf9 C00: lagt til hello_world.py (master gren)
Anta at vi vil sammenligne hello_world.py for C01 og C02 forplikter. Du kan bruke hasjene til å sammenligne:
$ git diff ee60eac: hallo_verden.py 3f611a0: hallo_verden.pydiff --git a / ee60eac: hallo_verden.py b / 3f611a0: hallo_verden.py
indeks e27f806… 72a178d 100644
--- a / ee60eac: hallo_verden.py
+++ b / 3f611a0: hallo_verden.py
@@ -2,7 +2,7 @@
def main ():
print ("Først Hei!")
- print ("Second Hello."!")
+ print ("Utviklingsgrenen sier Hei")
hvis __name__ == "__main__":
hoved()
Du kan bruke det samme prinsippet for å sammenligne forpliktelser innenfor samme gren også.
Visuelle fletteverktøy
Å se på tekstbaserte sammenligninger kan være vanskelig. Hvis du setter opp Git-verktøyet med et visuelt sammenslåingsprogram som DiffMerge eller BeyondCompare, vil du kunne se forskjeller bedre.
Videre studier:
- Git Diff-dokumentasjon
- Git DiffTool-dokumentasjon
- DiffMerge Setup med DiffTool
- BeyondCompare Setup med DiffTool
Referanser:
- Git Tutorial: Diff and Merge Tools, YouTube
- http: // coding4streetcred.com / blog / post / configure-diffmerge-for-your-git-difftool
- http: // gitbaby.no / hvordan-diff-en-fil-til-en-vilkårlig-versjon-i-git.html
- https: // git-scm.com / book / no / 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.no / spørsmål / 9834689 / sammenligne-to-grener-i-git
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-sammenligne-filer-med-diff /
- https: // www.scootersoftware.com / funksjoner.php
- https: // www.scootersoftware.com / support.php?zz = kb_vcs