Beveik visos versijų valdymo sistemos turi šakojimo galimybes. Tačiau „Git“ yra žinomas dėl savo greito išsišakojimo galimybių. Gito šakos yra lengvos. Taigi baudos už išsišakojimą yra minimalios, o kūrėjų komandos skatinamos kuo daugiau šakotis ir susijungti. Tačiau kai dirbate su keliomis šakomis, svarbu mokėti palyginti ir sulyginti skirtumus. Šioje pamokoje mes atliksime darbo eigą, kad pamatytume, kaip galime palyginti įvairias šakas ir įsipareigojimus. Pirmiausia nustatykime šią situaciją:
C00 => C01 => C03 => C06 (pagrindinis)
C02 => C04 => C05 (kūrimas)
Buvo imtasi šių veiksmų:
- C00: pridėta hello_world.py (pagrindinė šaka)
- - Sukūrė plėtros šaką
- C01: modifikuotas hello_world.py, kad būtų pridėtas antrasis labas (pagrindinė šaka)
- C02: modifikuotas hello_world.py, kad būtų pridėta plėtros šaka, sako „Sveiki“ (kūrimo šaka)
- C03: pridėtas readme.txt (pagrindinis skyrius)
- C04: modifikuotas „hello_world.py“, kad būtų pridėta plėtros šaka, sako „Sveiki dar kartą“ (kūrimo šaka)
- C05: pridėtas info.txt (kūrimo skyrius)
- C06: pakeistas „readme.txt“, kad būtų pridėta antra eilutė (pagrindinė šaka)
Po visų įsipareigojimų filialas „pagrindinis“ turi šiuos failus:
hello_world.py
readme.txt
„Plėtros“ filiale yra šie failai:
hello_world.py
info.txt
Lyginant dviejų šakų galvas
Šakų pavadinimais galite palyginti dviejų šakų vadovus:
$git difmeistras..vystymasdif -eikį/hello_world.py b/hello_world.py
indeksas e27f806..3899ed3100644
---į/hello_world.py
+++ b/hello_world.py
@@-2,7+2,7 @@
def pagrindinis():
spausdinti('Pirma, sveiki!')
- spausdinti('Antras Labas!')
-
+ spausdinti(„Vystymosi skyrius sako„ Sveiki “)
+ spausdinti(„Vystymosi skyrius sako„ Sveiki dar kartą “)
jei__vardas__ =='__main__':
pagrindinis()
dif -eikį/info.txt b/info.txt
naujasfailąrežimu100644
indeksas 0000000..0ab52fd
--- /dev/nulis
+++ b/info.txt
@@-0,0+1 @@
+Nauja informacija
dif -eikį/readme.txt b/readme.txt
ištrintafailąrežimu100644
indeksas e29c296..0000000
---į/readme.txt
+++/dev/nulis
@@-1,2+0,0 @@
-1Pirmoji readme.txt eilutė
-2Antra readme.txt eilutė
Komanda diff rekursyviai žiūri į pakeitimus. Jis paleido šiuos skirtumus:
skirtumai –git a/hello_world.py b/hello_world.py
dif –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt
Čia „a“ reiškia „pagrindinę“ šaką, o „b“ - plėtros šaką. „A“ visada priskiriamas pirmajam parametrui, o „b“ - antrajam parametrui. /Dev /null reiškia, kad filialas neturi failo.
Palyginimas tarp įsipareigojimų
Mūsų pavyzdyje filialas „meistras“ įsipareigoja:
$git būsenaAnt šakos meistro
nieko įsipareigoti, darbo katalogas švarus
$git žurnalas --viena linija
caa0ddd C06: modifikuotas readme.txt, kad būtų pridėta antra eilutė(pagrindinė šaka)
efaba94 C03: pridėtas readme.txt(pagrindinė šaka)
ee60eac C01: modifikuotas hello_world.py, kad būtų pridėtas antras labas(pagrindinė šaka)
22b4bf9 C00: Pridėta hello_world.py(pagrindinė šaka)
Vystymosi skyrius įsipareigoja:
$git būsenaApie šakos vystymąsi
nieko įsipareigoti, darbo katalogas švarus
$git žurnalas --viena linija
df3a4ee C05: pridėtas info.txt(plėtros šaka)
0f0abb8 C04: modifikuotas hello_world.py, kad būtų pridėta plėtros šaka, sako „Sveiki dar kartą“(plėtros šaka)
3f611a0 C02: modifikuotas hello_world.py, kad būtų pridėta plėtros šaka ir sako „Labas“(plėtros šaka)
22b4bf9 C00: Pridėta hello_world.py(pagrindinė šaka)
Tarkime, norime palyginti „hello_world.py“ C01 ir C02 įsipareigojimams. Norėdami palyginti, galite naudoti maišas:
$git difee60eac: hello_world.py 3f611a0: hello_world.pydif -eikį/ee60eac: hello_world.py b/3f611a0: hello_world.py
indeksas e27f806..72a178d100644
---į/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@
def pagrindinis():
spausdinti('Pirma, sveiki!')
- spausdinti('Antras Labas!')
+ spausdinti(„Vystymosi skyrius sako„ Sveiki “)
jei__vardas__ =='__main__':
pagrindinis()
Tuo pačiu principu galite lyginti ir tos pačios šakos įsipareigojimus.
Vizualinio sujungimo įrankiai
Palyginti tekstinius palyginimus gali būti sunku. Jei nustatysite „Git“ diftoolis naudojant vizualinio sujungimo programą, pvz „DiffMerge“ arba Be palyginimo , galėsite geriau matyti skirtumus.
Tolesnis tyrimas:
- „Git Diff“ dokumentacija
- „Git DiffTool“ dokumentacija
- „DiffMerge“ sąranka naudojant „DiffTool“
- Be to, palyginkite sąranką su „DiffTool“
Nuorodos:
- „Git“ pamoka: skirtumai ir sujungimo įrankiai , 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