Téměř všechny systémy pro správu verzí mají možnosti větvení. Ale Git je známý svými schopnostmi rychlého větvení. Větve Git jsou lehké. Sankce za výkon za větvení jsou tedy minimální a vývojové týmy jsou povzbuzovány k větvení a sloučení co nejvíce. Když ale pracujete s více pobočkami, je důležité umět rozdíly porovnat a porovnat. V tomto tutoriálu si projdeme pracovní postup, abychom zjistili, jak můžeme porovnávat různé větve a závazky. Nejprve nastavíme následující situaci:
C00 => C01 => C03 => C06 (hlavní)
C02 => C04 => C05 (vývoj)
Byly provedeny následující kroky:
- C00: Přidán hello_world.py (hlavní větev)
- - Vytvořil vývojovou větev
- C01: Upraven hello_world.py pro přidání druhého hello (hlavní větev)
- C02: Upraven hello_world.py pro přidání vývojové větve Hello (vývojová větev)
- C03: Přidán soubor readme.txt (hlavní větev)
- C04: Upraven hello_world.py tak, aby přidal vývojovou větev, říká Ahoj znovu (vývojová větev)
- C05: Přidán info.txt (vývojová větev)
- C06: Upravený soubor readme.txt pro přidání druhého řádku (hlavní větev)
Po všech potvrzeních má větev „master“ následující soubory:
ahoj_world.py
readme.txt
A větev „vývoj“ má následující soubory:
ahoj_world.py
info.txt
Porovnání hlav dvou větví
Název větví můžete použít k porovnání hlav dvou větví:
$git rozdílmistr..vývojrozdíl --jítna/ahoj_world.py b/ahoj_world.py
index e27f806..3899ed3100644
---na/ahoj_world.py
+++ b/ahoj_world.py
@@-2,7+2,7 @@
def hlavní():
tisk('První ahoj!')
- tisk('Druhé ahoj!')
-
+ tisk(„Vývojová pobočka říká Dobrý den“)
+ tisk(„Vývojová pobočka opět říká Dobrý den“)
-li__name__ =='__hlavní__':
hlavní()
rozdíl --jítna/info.txt b/info.txt
Novýsouborrežimu100644
index 0000000..0ab52fd
--- /dev/nula
+++ b/info.txt
@@-0,0+1 @@
+Nové informace
rozdíl --jítna/readme.txt b/readme.txt
smazánosouborrežimu100644
index e29c296..0000000
---na/readme.txt
+++/dev/nula
@@-1,2+0,0 @@
-1První řádek souboru readme.txt
-2Druhý řádek souboru readme.txt
Příkaz diff rekurzivně sleduje změny. Spustilo následující rozdíly:
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
Zde „a“ znamená „hlavní“ větev a „b“ znamená vývojovou větev. Prvnímu parametru je vždy přiřazeno „a“ a druhému parametru „b“. /Dev /null znamená, že větev soubor nemá.
Porovnání mezi závazky
V našem příkladu má „hlavní“ větev následující potvrzení:
$git statusNa pobočce mistra
nic se zavazovat, pracovní adresář čistý
$git log --online
caa0ddd C06: Upraven soubor readme.txt pro přidání druhého řádku(hlavní větev)
efaba94 C03: Přidán soubor readme.txt(hlavní větev)
ee60eac C01: Upravený hello_world.py pro přidání druhého ahoj(hlavní větev)
22b4bf9 C00: Přidán hello_world.py(hlavní větev)
Vývojová větev má následující potvrzení:
$git statusO vývoji pobočky
nic se zavazovat, pracovní adresář čistý
$git log --online
df3a4ee C05: Přidán soubor info.txt(vývojová větev)
0f0abb8 C04: Upraven hello_world.py tak, aby přidal vývojovou větev, opět říká Dobrý den(vývojová větev)
3f611a0 C02: Upraven hello_world.py pro přidání vývojové větve říká Hello(vývojová větev)
22b4bf9 C00: Přidán hello_world.py(hlavní větev)
Předpokládejme, že chceme porovnat hello_world.py pro provize C01 a C02. Ke srovnání můžete použít hodnoty hash:
$git rozdílee60eac: hello_world.py 3f611a0: hello_world.pyrozdíl --jítna/ee60eac: hello_world.py b/3f611a0: hello_world.py
index e27f806..72a178d100644
---na/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@
def hlavní():
tisk('První ahoj!')
- tisk('Druhé ahoj!')
+ tisk(„Vývojová pobočka říká Dobrý den“)
-li__name__ =='__hlavní__':
hlavní()
Stejný princip můžete použít také k porovnání potvrzení ve stejné větvi.
Nástroje pro vizuální sloučení
Pohled na textová srovnání může být obtížný. Pokud jste nastavili Git difftool s aplikací pro vizuální sloučení jako DiffMerge nebo BeyondCompare , budete moci lépe vidět rozdíly.
Další studie:
- Dokumentace Git Diff
- Dokumentace Git DiffTool
- Nastavení DiffMerge s DiffTool
- Nastavení BeyondCompare s DiffTool
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