Gotovo svi sustavi kontrole verzija imaju mogućnosti grananja. No, Git je poznat po svojim mogućnostima brzog grananja. Git grane su lagane. Stoga su kazne za izvedbu grananja minimalne, a razvojni se timovi potiču na grananje i spajanje što je više moguće. No, kada radite s više grana, važno je usporediti i uporediti razlike. U ovom ćemo vodiču proći kroz tijek rada kako bismo vidjeli kako možemo usporediti različite grane i urezivanja. Prvo postavimo sljedeću situaciju:
C00 => C01 => C03 => C06 (glavni)
C02 => C04 => C05 (razvoj)
Poduzeti su sljedeći koraci:
- C00: Dodano hello_world.py (glavna grana)
- - Stvorio razvojnu granu
- C01: Izmijenjen hello_world.py za dodavanje drugog pozdrava (glavna grana)
- C02: Izmijenjeno hello_world.py za dodavanje razvojne grane kaže Hello (razvojna grana)
- C03: Dodano readme.txt (glavna grana)
- C04: Izmijenjeno hello_world.py za dodavanje razvojne grane kaže 'Pozdrav opet' (razvojna grana)
- C05: Dodan info.txt (razvojna grana)
- C06: Izmijenjen readme.txt za dodavanje drugog retka (glavna grana)
Nakon svih urezivanja, 'glavna' grana ima sljedeće datoteke:
hello_world.py
readme.txt
A grana 'razvoj' ima sljedeće datoteke:
hello_world.py
info.txt
Usporedba glavica dviju grana
Možete upotrijebiti naziv grana za usporedbu glava dviju grana:
$git razlikamajstor..razvojrazl --ićido/hello_world.py b/hello_world.py
indeks e27f806..3899ed3100644
---do/hello_world.py
+++ b/hello_world.py
@@-2,7+2,7 @@
def main():
ispisati('Prvo Hello!')
- ispis('Drugi pozdrav!')
-
+ ispis('Podružnica za razvoj kaže' Zdravo ')
+ ispis('Razvojna podružnica kaže' Zdravo opet ')
ako__naziv__ =='__glavni__':
glavni()
razl --ićido/info.txt b/info.txt
novidatotekanačinu rada100644
indeks 0000000..0ab52fd
--- /dev/null
+++ b/info.txt
@@-0,0+1 @@
+Nove informacije
razl --ićido/readme.txt b/readme.txt
izbrisandatotekanačinu rada100644
indeks e29c296..0000000
---do/readme.txt
+++/dev/null
@@-1,2+0,0 @@
-1Prvi redak readme.txt
-2Drugi redak readme.txt
Naredba diff rekurzivno gleda promjene. Pokrenuo je sljedeće razlike:
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
Ovdje 'a' označava 'master' granu, a 'b' označava razvojnu granu. 'A' je uvijek dodijeljeno prvom parametru, a 'b' drugom parametru. /Dev /null znači da grana nema datoteku.
Usporedba među urezivanjima
U našem primjeru, 'master' grana ima sljedeće urezivanja:
$git statusNa podružnici
nema obveza, radni imenik čist
$git log --jedna linija
caa0ddd C06: Izmijenjen readme.txt za dodavanje drugog retka(glavna podružnica)
efaba94 C03: Dodano readme.txt(glavna podružnica)
ee60eac C01: Izmijenjen hello_world.py za dodavanje drugog pozdrava(glavna podružnica)
22b4bf9 C00: Dodano hello_world.py(glavna podružnica)
Razvojna grana ima sljedeće obveze:
$git statusO razvoju grana
nema obveza, radni imenik čist
$git log --jedna linija
df3a4ee C05: Dodan info.txt(razvojna grana)
0f0abb8 C04: Izmijenjena hello_world.py za dodavanje razvojne grane kaže Pozdrav opet(razvojna grana)
3f611a0 C02: Izmijenjena hello_world.py za dodavanje razvojne grane kaže Pozdrav(razvojna grana)
22b4bf9 C00: Dodano hello_world.py(glavna podružnica)
Pretpostavimo da želimo usporediti hello_world.py za urezivanja C01 i C02. Pomoću raspršivača možete usporediti:
$git razlikaee60eac: hello_world.py 3f611a0: hello_world.pyrazl --ićido/ee60eac: hello_world.py b/3f611a0: hello_world.py
indeks e27f806..72a178d100644
---do/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@
def main():
ispisati('Prvo Hello!')
- ispis('Drugi pozdrav!')
+ ispis('Podružnica za razvoj kaže' Zdravo ')
ako__naziv__ =='__glavni__':
glavni()
Možete koristiti isti princip za usporedbu urezivanja unutar iste grane.
Alati za vizualno spajanje
Usporedbe na temelju teksta mogu biti teške. Ako postavite Git difftool s aplikacijom za vizualno spajanje poput DiffMerge ili BeyondCompare , moći ćete bolje vidjeti razlike.
Daljni studiji:
- Git Diff Dokumentacija
- Git DiffTool dokumentacija
- DiffMerge postavljanje s DiffTool -om
- BeyondCompare Setup s DiffTool -om
Reference:
- Git Tutorial: Diff and 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