Git Porovnajte dve vetvy

Git Compare Two Branches



Takmer všetky systémy na správu verzií majú možnosti rozvetvenia. Git je však známy svojimi schopnosťami rýchleho vetvenia. Vetvy Git sú ľahké. Sankcie za výkon za vetvenie sú teda minimálne a vývojové tímy sú nabádané, aby sa čo najviac rozvetvovali a spájali. Ale keď pracujete s viacerými pobočkami, je dôležité, aby ste boli schopní porovnať a kontrastovať rozdiely. V tomto tutoriáli si prejdeme pracovným tokom, aby sme zistili, ako môžeme porovnávať rôzne vetvy a záväzky. Najprv si nastavme nasledujúcu situáciu:

C00 => C01 => C03 => C06 (hlavný)









C02 => C04 => C05 (vývoj)



Vykonali sa nasledujúce kroky:





  • C00: Pridaný hello_world.py (hlavná vetva)
  • - Vytvorila sa vývojová vetva
  • C01: Upravený hello_world.py na pridanie druhého ahoj (hlavná vetva)
  • C02: Upravený hello_world.py na pridanie vývojovej vetvy hovorí Hello (vývojová vetva)
  • C03: Pridaný súbor readme.txt (hlavná vetva)
  • C04: Upravený hello_world.py na pridanie vývojovej vetvy hovorí „Ahoj znova“ (vývojová vetva)
  • C05: Pridaný info.txt (vývojová vetva)
  • C06: Upravený súbor readme.txt na pridanie druhého riadka (hlavná vetva)

Po všetkých potvrdeniach má vetva „master“ nasledujúce súbory:

ahoj_world.py
readme.txt



A vetva „vývoj“ má nasledujúce súbory:

ahoj_world.py
info.txt


Porovnanie hláv dvoch vetiev

Názov pobočiek môžete použiť na porovnanie hláv dvoch vetiev:

$git rozdielmajster..vývoj

rozdiel -choďdo/ahoj_world.py b/ahoj_world.py
index e27f806..3899ed3100644
---do/ahoj_world.py
+++ b/ahoj_world.py
@@-2,7+2,7 @@

def hlavné():
vytlačiť(„Najprv ahoj!“)
- vytlačiť(„Druhé ahoj!“)
-
+ vytlačiť(„Vývojová pobočka hovorí ahoj“)
+ vytlačiť(„Vývojová pobočka opäť pozdravuje)
keby__name__ =='__Hlavná__':
Hlavná()
rozdiel -choďdo/info.txt b/info.txt
Novýsúborrežim100644
index 0000000..0ab52fd
--- /dev/nulový
+++ b/info.txt
@@-0,0+1 @@
+Nové informácie
rozdiel -choďdo/readme.txt b/readme.txt
vymazanésúborrežim100644
index e29c296..0000000
---do/readme.txt
+++/dev/nulový
@@-1,2+0,0 @@
-1Prvý riadok súboru readme.txt
-2Druhý riadok súboru readme.txt

Príkaz diff rekurzívne sleduje zmeny. Spustilo nasledujúce rozdiely:

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“ znamená vetvu „master“ a „b“ znamená vetvu vývoja. Prvému parametru je vždy priradené „a“ a druhému parametru „b“. /Dev /null znamená, že vetva nemá súbor.


Porovnanie medzi záväzkami

V našom prípade má vetva „master“ nasledujúce záväzky:

$stav git
Na pobočke majstra
nič zaväzovať, pracovný adresár čistý

$git log --jedna čiara
caa0ddd C06: Upravený súbor readme.txt na pridanie druhého riadka(majstrovská vetva)
efaba94 C03: Pridaný súbor readme.txt(majstrovská vetva)
ee60eac C01: Upravený hello_world.py na pridanie druhého ahoj(majstrovská vetva)
22b4bf9 C00: Pridané hello_world.py(majstrovská vetva)

Vývojová vetva má nasledujúce záväzky:

$stav git
O rozvoji pobočky
nič zaväzovať, pracovný adresár čistý

$git log --jedna čiara
df3a4ee C05: Bol pridaný súbor info.txt(vývojová vetva)
0f0abb8 C04: Upravený hello_world.py tak, aby pridal vývojovú vetvu, opäť hovorí Ahoj(vývojová vetva)
3f611a0 C02: Upravený hello_world.py na pridanie vývojovej vetvy hovorí Ahoj(vývojová vetva)
22b4bf9 C00: Pridané hello_world.py(majstrovská vetva)

Predpokladajme, že chceme porovnať súbor hello_world.py pre záväzky C01 a C02. Na porovnanie môžete použiť hodnoty hash:

$git rozdielee60eac: hello_world.py 3f611a0: hello_world.py

rozdiel -choďdo/ee60eac: hello_world.py b/3f611a0: hello_world.py
index e27f806..72a178d100644
---do/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@

def hlavné():
vytlačiť(„Najprv ahoj!“)
- vytlačiť(„Druhé ahoj!“)
+ vytlačiť(„Vývojová pobočka hovorí ahoj“)

keby__name__ =='__Hlavná__':
Hlavná()

Rovnaký princíp môžete použiť aj na porovnanie potvrdení v rámci tej istej pobočky.


Nástroje vizuálneho zlúčenia

Pohľad na porovnania založené na texte môže byť náročné. Ak ste nastavili Git difftool s aplikáciou vizuálneho zlúčenia ako DiffMerge alebo BeyondCompare , budete lepšie vidieť rozdiely.

Ďalšie štúdium:

Referencie: