Gandrīz visām versiju kontroles sistēmām ir sazarošanās iespējas. Bet Git ir pazīstams ar savām ātrajām atzarošanas iespējām. Git zari ir viegli. Tātad izpildes sodi par sazarošanos ir minimāli, un attīstības komandas tiek mudinātas pēc iespējas vairāk sazaroties un apvienoties. Bet, strādājot ar vairākām nozarēm, ir svarīgi spēt salīdzināt un pretstatīt atšķirības. Šajā apmācībā mēs izskatīsim darbplūsmu, lai noskaidrotu, kā mēs varam salīdzināt dažādas nozares un saistības. Vispirms izveidosim šādu situāciju:
C00 => C01 => C03 => C06 (galvenais)
C02 => C04 => C05 (izstrāde)
Tika veikti šādi soļi:
- C00: pievienots hello_world.py (galvenā filiāle)
- - Izveidoja attīstības nozari
- C01: modificēts hello_world.py, lai pievienotu otro sveicienu (galvenā filiāle)
- C02: modificēts hello_world.py, lai pievienotu attīstības filiāli, saka sveiki (attīstības filiāle)
- C03: pievienots fails readme.txt (galvenā filiāle)
- C04: modificēts hello_world.py, lai pievienotu attīstības filiāli, saka vēlreiz! (Attīstības filiāle)
- C05: pievienots info.txt (izstrādes filiāle)
- C06: modificēts fails readme.txt, lai pievienotu otro rindu (galvenā filiāle)
Pēc visām saistībām filiālē “galvenais” ir šādi faili:
labdien_pasaule.py
readme.txt
Nozarei “attīstība” ir šādi faili:
labdien_pasaule.py
info.txt
Salīdzinot divu filiāļu galvas
Varat izmantot filiāļu nosaukumu, lai salīdzinātu divu filiāļu galvas:
$git difmeistars..attīstībadif -ietuz/hello_world.py b/labdien_pasaule.py
indekss e27f806..3899ed3100644
---uz/labdien_pasaule.py
+++ b/labdien_pasaule.py
@@-2,7+2,7 @@
def galvenais():
drukāt('Vispirms sveiks!')
- drukāt('Otrais sveiks!')
-
+ drukāt('Attīstības filiāle saka sveiki')
+ drukāt('Attīstības filiāle saka vēlreiz sveiki')
ja__vārds__ =='__main__':
galvenais()
dif -ietuz/info.txt b/info.txt
jaunsfailurežīmu100644
indekss 0000000..0ab52fd
--- /dev/null
+++ b/info.txt
@@-0,0+1 @@
+Jauna informācija
dif -ietuz/readme.txt b/readme.txt
svītrotsfailurežīmu100644
indekss e29c296..0000000
---uz/readme.txt
+++/dev/null
@@-1,2+0,0 @@
-1Readme.txt pirmā rinda
-2Readme.txt otrā rinda
Komanda diff rekursīvi aplūko izmaiņas. Tas ir palaidis šādus atšķirības:
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
Šeit “a” apzīmē “galveno” nozari un “b” apzīmē attīstības nozari. Pirmajam parametram vienmēr tiek piešķirts “a”, bet otrajam - “b”. /Dev /null nozīmē, ka filiālei nav faila.
Salīdzinot saistības
Mūsu piemērā filiālei “galvenais” ir šādas saistības:
$git statussPar filiāles meistaru
nav ko darīt, darba katalogs tīrs
$git žurnāls -tiešsaistē
caa0ddd C06: modificēts readme.txt, lai pievienotu otro rindu(meistara filiāle)
efaba94 C03: pievienots fails readme.txt(meistara filiāle)
ee60eac C01: modificēts hello_world.py, lai pievienotu otro sveicienu(meistara filiāle)
22b4bf9 C00: Pievienots hello_world.py(meistara filiāle)
Attīstības nozarei ir šādas saistības:
$git statussPar nozares attīstību
nav ko darīt, darba katalogs tīrs
$git žurnāls -tiešsaistē
df3a4ee C05: pievienots info.txt(attīstības nozare)
0f0abb8 C04: modificēts hello_world.py, lai pievienotu attīstības filiāli, saka vēlreiz!(attīstības nozare)
3f611a0 C02: Modificēts hello_world.py, lai pievienotu attīstības filiāli, saka Sveiki(attīstības nozare)
22b4bf9 C00: Pievienots hello_world.py(meistara filiāle)
Pieņemsim, ka mēs vēlamies salīdzināt hello_world.py C01 un C02 saistībām. Salīdzināšanai varat izmantot jaukšanas iespējas:
$git difee60eac: hello_world.py 3f611a0: hello_world.pydif -ietuz/ee60eac: hello_world.py b/3f611a0: hello_world.py
indekss e27f806..72a178d100644
---uz/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@
def galvenais():
drukāt('Vispirms sveiks!')
- drukāt('Otrais sveiks!')
+ drukāt('Attīstības filiāle saka sveiki')
ja__vārds__ =='__main__':
galvenais()
Jūs varat izmantot to pašu principu, lai salīdzinātu saistības arī tajā pašā nozarē.
Vizuālās sapludināšanas rīki
Teksta salīdzinājumu aplūkošana var būt sarežģīta. Ja iestatāt Git diftools ar vizuālas sapludināšanas lietojumprogrammu, piemēram DiffMerge vai BeyondCompare , jūs varēsit labāk redzēt atšķirības.
Turpmāka izpēte:
- Git Diff dokumentācija
- Git DiffTool dokumentācija
- DiffMerge iestatīšana ar DiffTool
- BeyondSalīdziniet iestatīšanu ar DiffTool
Atsauces:
- Git apmācība: atšķirības un sapludināšanas rīki , 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