Gotovo svi sustavi kontrole verzija imaju mogućnosti razgranavanja. No, Git je poznat po svojim brzim mogućnostima grananja. Git grane su lagane. Tako su kazne za izvedbu grananja minimalne, a razvojni timovi potiču se da se što više granaju i spajaju. Ali kada radite s više grana, važno je usporediti i usporediti razlike. U ovom uputstvu proći ćemo kroz tijek rada kako bismo vidjeli kako možemo usporediti razne grane i predaje.Postavimo prvo sljedeću situaciju:
C00 => C01 => C03 => C06 (glavni)
\
C02 => C04 => C05 (razvoj)
Poduzeti su sljedeći koraci:
- C00: Dodan hello_world.py (glavna grana)
- - Stvorio razvojnu granu
- C01: Izmijenjeni hello_world.py za dodavanje drugog zdrava (glavna grana)
- C02: Izmijenjeni hello_world.py za dodavanje razvojne grane kaže Hello (razvojna grana)
- C03: Dodan readme.txt (glavna grana)
- C04: Izmijenjeni hello_world.py za dodavanje razvojne grane kaže opet zdravo (razvojna grana)
- C05: Dodane informacije.txt (razvojna grana)
- C06: Izmijenjeni readme.txt za dodavanje drugog retka (glavna grana)
Nakon svih urezivanja, grana 'master' ima sljedeće datoteke:
Pozdrav svijete.py
Pročitaj me.txt
A grana 'razvoj' ima sljedeće datoteke:
Pozdrav svijete.py
info.txt
Uspoređujući glave dviju grana
Ime grana možete koristiti za usporedbu glava dviju grana:
$ git diff master ... razvojdiff --git a / hello_world.py b / hello_world.py
indeks e27f806… 3899ed3 100644
--- a / hello_world.py
+++ b / hello_world.py
@@ -2,7 +2,7 @@
def glavni ():
print ("Prvo zdravo!")
- print ("Drugi pozdrav!")
-
+ print ("Podružnica za razvoj pozdravlja")
+ print ("Podružnica za razvoj kaže" Pozdrav opet ")
ako je __name__ == "__glavno__":
glavni()
diff --git a / info.txt b / info.txt
novi način datoteke 100644
indeks 0000000 ... 0ab52fd
--- / dev / null
+++ b / info.txt
@@ -0,0 +1 @@
+Nove informacije
diff --git a / readme.txt b / readme.txt
način brisanja datoteka 100644
indeks e29c296 ... 0000000
--- a / readme.txt
+++ / dev / null
@@ -1,2 +0,0 @@
-1 Prvi redak readmea.txt
-2 Drugi redak readmea.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' znači 'glavna' grana, a 'b' je razvojna grana. 'A' se uvijek dodjeljuje prvom parametru, a 'b' drugom parametru. / Dev / null znači da grana nema datoteku.
Usporedba između predavanja
U našem primjeru, grana 'master' ima sljedeće obveze:
$ git statusNa majstoru grane
ništa za obvezivanje, radni direktorij čist
$ git log --oneline
caa0ddd C06: Izmijenjeni readme.txt za dodavanje drugog retka (glavna grana)
efaba94 C03: Dodan readme.txt (glavna grana)
ee60eac C01: Izmijenjeni hello_world.py za dodavanje drugog zdrava (glavna grana)
22b4bf9 C00: Dodan hello_world.py (glavna grana)
Razvojna grana ima sljedeće obveze:
$ git statusO razvoju grana
ništa za obvezivanje, radni direktorij čist
$ git log --oneline
df3a4ee C05: Dodane informacije.txt (razvojna grana)
0f0abb8 C04: Izmijenjeni hello_world.py za dodavanje razvojne grane kaže opet zdravo (razvojna grana)
3f611a0 C02: Izmijenjeni hello_world.py za dodavanje razvojne grane kaže Hello (razvojna grana)
22b4bf9 C00: Dodan hello_world.py (glavna grana)
Pretpostavimo da želimo usporediti hello_world.py za obveze C01 i C02. Pomoću hashova možete usporediti:
$ git diff ee60eac: hello_world.py 3f611a0: hello_world.pydiff --git a / ee60eac: hello_world.py b / 3f611a0: hello_world.py
indeks e27f806… 72a178d 100644
--- a / ee60eac: hello_world.py
+++ b / 3f611a0: hello_world.py
@@ -2,7 +2,7 @@
def glavni ():
print ("Prvo zdravo!")
- print ("Drugi pozdrav!")
+ print ("Podružnica za razvoj pozdravlja")
ako je __name__ == "__glavno__":
glavni()
Možete koristiti isti princip za usporedbu obveza unutar iste grane.
Alati za vizualno spajanje
Gledanje usporedbi zasnovanih na tekstu može biti teško. Ako Git difftool postavite s aplikacijom za vizualno spajanje poput DiffMerge ili BeyondCompare, moći ćete bolje vidjeti razlike.
Daljni studiji:
- Git Diff dokumentacija
- Git DiffTool dokumentacija
- Postavljanje DiffMerge s DiffTool
- BeyondCompare Setup s DiffTool-om
Reference:
- Vodič za Git: Alati za razlikovanje i spajanje, YouTube
- http: // coding4streetcred.com / blog / post / configure-diffmerge-for-your-git-difftool
- http: // gitbaby.com / kako-razlikovati-jednu-datoteku-u-proizvoljnu-verziju-u-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 / uspoređivanje-dvije-grane-u-gitu
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-uspoređivanje-datoteka-s-razlikom /
- https: // www.skuterski softver.com / značajke.php
- https: // www.skuterski softver.com / podrška.php?zz = kb_vcs