Skoraj vsi sistemi za nadzor različic imajo možnosti razvejanja. Toda Git je znan po svojih hitrih vejah. Git veje so lahke. Tako so kazni za uspešnost za razvejanje minimalne, razvojne ekipe pa spodbujamo, da se čim bolj razvejajo in združijo. Ko pa delate z več vejami, je pomembno, da lahko primerjate in primerjate razlike. V tej vadnici si bomo ogledali potek dela, da vidimo, kako lahko primerjamo različne veje in zaveze.Najprej nastavimo naslednjo situacijo:
C00 => C01 => C03 => C06 (glavni)
\
C02 => C04 => C05 (razvoj)
Izvedeni so bili naslednji koraki:
- C00: Dodan hello_world.py (glavna veja)
- - Ustvaril razvojno vejo
- C01: Spremenjen hello_world.py za dodajanje drugega zdravo (glavna veja)
- C02: Spremenjen hello_world.py za dodajanje Razvojna veja pravi Hello (razvojna veja)
- C03: Dodan je bralnik.txt (glavna veja)
- C04: Spremenjen hello_world.py za dodajanje Razvojna veja pravi še enkrat Pozdravljena (razvojna veja)
- C05: Dodane informacije.txt (razvojna veja)
- C06: Spremenjen readme.txt za dodajanje druge vrstice (glavna veja)
Po vseh predajah ima veja 'master' naslednje datoteke:
Pozdravljen, svet.py
readme.txt
In veja 'razvoj' ima naslednje datoteke:
Pozdravljen, svet.py
info.txt
Primerjava glav dveh vej
Ime vej lahko uporabite za primerjavo glav dveh vej:
$ 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 main ():
print ("Prvi pozdrav!")
- print ("Drugi pozdrav!")
-
+ print ("Podružnica za razvoj pravi Hello")
+ print ("Podružnica za razvoj pravi še enkrat pozdravljeni")
če je __name__ == "__glavna__":
glavni ()
diff --git a / info.txt b / info.txt
nov datotečni način 100644
indeks 0000000… 0ab52fd
--- / dev / null
+++ b / info.txt
@@ -0,0 +1 @@
+Nove informacije
diff --git a / readme.txt b / readme.txt
način izbrisane datoteke 100644
indeks e29c296… 0000000
--- a / readme.txt
+++ / dev / null
@@ -1,2 +0,0 @@
-1 Prva vrstica branja.txt
-2 Druga vrstica branja.txt
Ukaz diff rekurzivno gleda na spremembe. Izvedel je naslednje 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
Tu 'a' pomeni vejo 'master', 'b' pa razvojno vejo. 'A' je vedno dodeljen prvemu parametru, 'b' pa drugemu parametru. / Dev / null pomeni, da podružnica nima datoteke.
Primerjava med prevzemi
V našem primeru ima veja 'master' naslednje zaveze:
$ git statusNa poveljniku podružnice
nič za zavezati, delovni imenik čist
$ git log --oneline
caa0ddd C06: Spremenjen readme.txt za dodajanje druge vrstice (glavna veja)
efaba94 C03: Dodan readme.txt (glavna veja)
ee60eac C01: Spremenjen hello_world.py za dodajanje drugega zdravo (glavna veja)
22b4bf9 C00: dodan hello_world.py (glavna veja)
Razvojna veja ima naslednje zaveze:
$ git statusO razvoju panog
nič za zavezati, delovni imenik čist
$ git log --oneline
df3a4ee C05: Dodane informacije.txt (razvojna veja)
0f0abb8 C04: Spremenjen hello_world.py za dodajanje Razvojna veja pravi še enkrat Pozdravljena (razvojna veja)
3f611a0 C02: Spremenjen hello_world.py za dodajanje Razvojna veja pravi Hello (razvojna veja)
22b4bf9 C00: dodan hello_world.py (glavna veja)
Recimo, da želimo primerjati hello_world.py za zaveze C01 in C02. Z razpršilci lahko uporabite za primerjavo:
$ 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 main ():
print ("Prvi pozdrav!")
- print ("Drugi pozdrav!")
+ print ("Podružnica za razvoj pravi Hello")
če je __name__ == "__glavna__":
glavni ()
Z istim načelom lahko primerjate tudi zaveze znotraj iste veje.
Orodja za vizualno spajanje
Pogled na besedilne primerjave je lahko težaven. Če Git difftool nastavite z aplikacijo za vizualno spajanje, kot sta DiffMerge ali BeyondCompare, boste lahko bolje videli razlike.
Nadaljni študij:
- Git Diff dokumentacija
- Dokumentacija Git DiffTool
- Nastavitev DiffMerge z DiffTool
- BeyondCompare Setup z DiffTool
Reference:
- Vadnica za Git: 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-arbitrar-version-in-git.html
- https: // git-scm.com / book / sl / 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-branch-in-git
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-comparing-files-with-diff /
- https: // www.skuterji.com / funkcije.php
- https: // www.skuterji.com / podpora.php?zz = kb_vcs