Szinte minden verziókezelő rendszer rendelkezik elágazási lehetőségekkel. A Git azonban gyors elágazó képességeiről ismert. A git ágak könnyűek. Tehát az elágazásért járó teljesítménybüntetések minimálisak, és a fejlesztőcsapatokat arra ösztönzik, hogy lehetőleg ágazzanak és egyesüljenek. De ha több ággal dolgozik, fontos, hogy képes legyen összehasonlítani és szembeállítani a különbségeket. Ebben az oktatóanyagban egy munkafolyamaton megyünk keresztül, hogy lássuk, hogyan tudjuk összehasonlítani a különböző ágakat és kötelezettségvállalásokat. Először állítsuk be a következő helyzetet:
C00 => C01 => C03 => C06 (mester)
C02 => C04 => C05 (fejlesztés)
A következő lépéseket tették:
- C00: Hozzáadva a hello_world.py (főág)
- - Létrehozta a fejlesztési ágat
- C01: A hello_world.py módosítva a második hello hozzáadásához (master ág)
- C02: A hello_world.py módosítása a fejlesztési ág hozzáadásához Hello (fejlesztési ág)
- C03: Hozzáadott readme.txt (fő ág)
- C04: A hello_world.py módosítása a fejlesztési ág hozzáadásához Hello újra (fejlesztési ág)
- C05: Hozzáadott info.txt (fejlesztési ág)
- C06: A readme.txt fájl módosítva a második sor hozzáadásához (fő ág)
Az összes elkövetés után a „master” ág a következő fájlokkal rendelkezik:
hello_world.py
readme.txt
A „fejlesztés” ág pedig a következő fájlokkal rendelkezik:
hello_world.py
info.txt
Két ág fejének összehasonlítása
Az ágak nevével összehasonlíthatja két ág fejét:
$git diffmester..fejlesztésdiff --megynak nek/hello_world.py b/hello_world.py
index e27f806..3899ed3100644
---nak nek/hello_world.py
+++ b/hello_world.py
@@-2,7+2,7 @@
def fő():
nyomtatás(- Először is Hello!)
- nyomtatás(- Második Helló!)
-
+ nyomtatás('A fejlesztési ág üdvözli')
+ nyomtatás('A fejlesztési ág újra üdvözli')
ha__név__ =='__fő__':
fő-()
diff --megynak nek/info.txt b/info.txt
újfájltmód100644
index 0000000..0ab52fd
--- /dev/nulla
+++ b/info.txt
@@-0,0+1 @@
+Új információk
diff --megynak nek/readme.txt b/readme.txt
törölvefájltmód100644
index e29c296..0000000
---nak nek/readme.txt
+++/dev/nulla
@@-1,2+0,0 @@
-1A readme.txt első sora
-2A readme.txt második sora
A diff parancs rekurzívan nézi a változásokat. A következő különbségeket futtatta:
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
Itt az „a” a „mester” és a „b” a fejlesztési ágat jelenti. Az „a” mindig az első paraméterhez, a „b” pedig a második paraméterhez van hozzárendelve. A /dev /null azt jelenti, hogy az ágnak nincs fájlja.
A kötelezettségvállalások összehasonlítása
Példánkban a „mester” ág a következő kötelezettségeket vállalja:
$git állapotÁgmesterről
nincs mit elkötelezni, a könyvtár tiszta
$git napló --egy sor
caa0ddd C06: A readme.txt fájl módosítva a második sor hozzáadásához(mester ág)
efaba94 C03: Hozzáadva readme.txt(mester ág)
ee60eac C01: A hello_world.py módosítása a második hello hozzáadásához(mester ág)
22b4bf9 C00: Hozzáadva a hello_world.py(mester ág)
A fejlesztési ág a következő kötelezettségeket vállalja:
$git állapotAz ágazat fejlesztéséről
nincs mit elkötelezni, a könyvtár tiszta
$git napló --egy sor
df3a4ee C05: Hozzáadott info.txt(fejlesztési ág)
0f0abb8 C04: A hello_world.py módosítása a fejlesztési ág hozzáadásához Hello újra(fejlesztési ág)
3f611a0 C02: A hello_world.py módosítása a fejlesztési ág hozzáadásához Hello(fejlesztési ág)
22b4bf9 C00: Hozzáadva a hello_world.py(mester ág)
Tegyük fel, hogy összehasonlítani akarjuk a hello_world.py -t a C01 és a C02 véglegesítéseknél. Az összehasonlításhoz használhatja a hash -eket:
$git diffee60eac: hello_world.py 3f611a0: hello_world.pydiff --megynak nek/ee60eac: hello_world.py b/3f611a0: hello_world.py
index e27f806..72a178d100644
---nak nek/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@
def fő():
nyomtatás(- Először is Hello!)
- nyomtatás(- Második Helló!)
+ nyomtatás('A fejlesztési ág üdvözli')
ha__név__ =='__fő__':
fő-()
Ugyanezt az elvet használhatja az ugyanazon ágazaton belüli kötelezettségvállalások összehasonlítására is.
Vizuális egyesítési eszközök
A szöveges összehasonlítások vizsgálata nehéz lehet. Ha beállítja a Git -et difftool olyan vizuális egyesítési alkalmazással, mint a DiffMerge vagy Összehasonlításon túl , jobban látni fogja a különbségeket.
A további vizsgálat:
- Git Diff dokumentáció
- Git DiffTool dokumentáció
- DiffMerge beállítás a DiffTool segítségével
- A beállítások összehasonlítása a DiffTool eszközzel
Hivatkozások:
- Git bemutató: Diff és Merge Tools , Youtube
- http://coding4streetcred.com/blog/post/configure-diffmerge-for-your-git-difftool
- http://gitbaby.com/how-to-diff-one-file-to-an-arbitrary-version-in-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/questions/9834689/comparing-two-branches-in-git
- https://veerasundar.com/blog/2011/06/git-tutorial-comparing-files-with-diff/
- https://www.scootersoftware.com/features.php
- https://www.scootersoftware.com/support.php?zz=kb_vcs