@@ -63,7 +63,7 @@ Switched to branch 'doplneni-autora'
6363```
6464
6565Tak. Teď jsi „ve” větvi ` doplneni-autora ` .
66- Doplň nějaké jméno do souboru ` basnicka.txt ` ,
66+ Doplň nějaké jméno na začátek souboru ` basnicka.txt ` ,
6767a pomocí ` git add ` a ` git commit ` udělej novou revizi.
6868Pak koukni na ` gitk --all ` , jak to vypadá:
6969
@@ -93,7 +93,8 @@ Switched to branch 'doplneni-jmena'
9393 master␛[m
9494```
9595
96- Doplň do souboru jméno básně a pomocí
96+ Doplň jméno básně na začátek souboru (tedy na stejné místo,
97+ jako je v druhé větvi název) a pomocí
9798` git add ` , ` git commit ` ulož revizi.
9899Všechno zkontroluj přes ` gitk --all ` .
99100
@@ -125,7 +126,8 @@ zpátky do `master`. Podívejme se jak na to.
125126
126127Nedávalo by smysl historii projektu rozdvojovat,
127128kdyby pak jednotlivé větve nešly zase sloučit dohromady.
128- Naštěstí je v Gitu slučování poměrně jednoduché.
129+ V Gitu je většinou slučování poměrně jednoduché, ale tento příklad schválně
130+ ukazuje nejsložitější variantu, která může nastat.
129131
130132Přepni se zpátky na ` master `
131133a použij příkaz ` git merge ` , který
@@ -136,10 +138,10 @@ Příkazu musíš dát jméno větve, kterou chceš sloučit.
136138␛[36m$␛[0m git checkout master
137139Switched to branch 'master'
138140␛[36m$␛[0m git merge doplneni-jmena
139- Updating e929fb0..c982a81
141+ Updating 1fcd654..5c9bf93
140142Fast-forward
141- basnicka.txt | 6 ␛[32m+++++␛[m␛[31m- ␛[m
142- 1 file changed, 5 insertions(+), 1 deletion(- )
143+ basnicka.txt | 3 ␛[32m+++␛[m
144+ 1 file changed, 3 insertions(+)
143145```
144146
145147Sloučeno! Ono „` Fast-forward ` ” znamená, že
@@ -148,25 +150,82 @@ vlastně nebylo co slučovat – jen se do větve
148150Zkontroluj v ` gitk --all ` , jak to vypadá.
149151
150152A pak zkus sloučit i druhou větev: ` git merge doplneni-autora ` .
151- Tady to bude složitější: Může se stát , že změny nepůjdou
153+ Tady to bude složitější: pravděpodobně se stane , že změny nepůjdou
152154automaticky sloučit a ve výstupu se objeví hláška
153- ` merge conflict ` (slučovací konflikt).
155+ ` merge conflict ` (slučovací konflikt):
156+
157+ ``` ansi
158+ ␛[36m$␛[0m git merge doplneni-autora
159+ Auto-merging basnicka.txt
160+ CONFLICT (content): Merge conflict in basnicka.txt
161+ Automatic merge failed; fix conflicts and then commit the result.
162+ ```
163+
164+ > [ note] A když ne?
165+ > Jestli se konflikt neobjevil, Git změny sloučil sám.
166+ > Gratuluji! Zbytek téhle sekce bude jen teoretický; vrať se sem, až se ti
167+ > někdy „podaří“ konflikt udělat.
168+
169+ Když nastane konflikt, ` git status ` ukáže „both modified“ – tedy že byl soubor
170+ změněný v obou slučovaných větvích:
171+
172+ ``` ansi
173+ ␛[36m$␛[0m git status
174+ On branch master
175+ You have unmerged paths.
176+ (fix conflicts and run "git commit")
177+ (use "git merge --abort" to abort the merge)
178+
179+ Unmerged paths:
180+ (use "git add <file>..." to mark resolution)
181+ ␛[31mboth modified: basnicka.txt␛[m
182+
183+ no changes added to commit (use "git add" and/or "git commit -a")
184+ ```
154185V tom případě se na soubor podívej v editoru: objeví
155186se v něm obsah z obou konfliktních verzí,
156- společně se značkami, které upozorňují na místo
157- kde konflikt nastal.
158- Soubor uprav ho tak, jak by měl vypadat, ulož a zadej
159- ` git commit ` .
187+ společně se značkami ` <<<<<<< ` , ` ======= ` a ` >>>>>>> ` , které upozorňují na
188+ místo kde konflikt nastal.
189+
190+ Značky ukáže i příkaz ` git diff ` , jehož výstup je teď trošku složitější:
191+
192+ ``` ansi
193+ ␛[36m$␛[0m git diff
194+ ␛[1mdiff --cc basnicka.txt␛[m
195+ ␛[1mindex bc7a2de,88e7ea5..0000000␛[m
196+ ␛[1m--- a/basnicka.txt␛[m
197+ ␛[1m+++ b/basnicka.txt␛[m
198+ ␛[36m@@@ -1,4 -1,4 +1,8 @@@␛[m
199+ ␛[32m++<<<<<<< HEAD␛[m
200+ ␛[32m +Holka Modrooká␛[m
201+ ␛[32m++=======␛[m
202+ ␛[32m+ (Lidová)␛[m
203+ ␛[32m++>>>>>>> doplneni-autora␛[m
204+ ␛[m
205+ Holka modrooká␛[m
206+ Nesedávej u potoka␛[m
207+ ```
208+
209+ Konflikty a značky, které můžou být nepřehledné, ukazuje Git ze stejného důvodu
210+ jako Python chybové hlášky: tedy aby ti co nejvíce pomohl.
211+ Git je jen „hloupý“ nástroj a s konfliktem si neporadí sám, ale snaží se
212+ ti řešení konfliktu co nejvíc usnadnit.
213+
214+ Proto hlavně nepanikař!
215+ Soubor otevři v editoru a uprav ** tak, jak by měl vypadat** .
216+ Značky jako ` <<<<<<< ` smaž; řádky poskládej tak, jak by měly jít za sebou.
217+ (A pracuješ-li na kódu, spusť testy a ověř, jestli všechno stále funguje.)
218+
219+ Pak soubor ulož a zadej ` git commit ` .
160220
161221Ať nastal konflikt nebo ne, vytvoří se „slučovací revize“
162222(angl. * merge commit* ), které – jako každé revizi – můžeš dát popisek.
223+ Tentokrát je popisek už předvyplněný; chceš-li nějaký jiný, nahraď ho.
163224
164225``` ansi
165- ␛[36m$␛[0m git merge doplneni-autora
166- Auto-merging basnicka.txt
167- Merge made by the 'recursive' strategy.
168- basnicka.txt | 2 ␛[32m++␛[m
169- 1 file changed, 2 insertions(+)
226+ ␛[36m$␛[0m git add basnicka.txt
227+ ␛[36m$␛[0m git commit
228+ [master 884b30a] Merge branch 'doplneni-autora'
170229```
171230
172231Povedlo se?
@@ -181,10 +240,10 @@ změny jsou v `master` a nemá na nich cenu
181240pracovat dál.
182241
183242``` ansi
184- ␛[36m$␛[0m git branch -d doplneni-autora
185- Deleted branch doplneni-autora (was 0e213cd ).
186- ␛[36m$␛[0m git branch -d doplneni-jmena
187- Deleted branch doplneni-jmena (was c982a81 ).
243+ ␛[36m$␛[0m git branch --delete doplneni-autora
244+ Deleted branch doplneni-autora (was f1cd9be ).
245+ ␛[36m$␛[0m git branch --delete doplneni-jmena
246+ Deleted branch doplneni-jmena (was 5c9bf93 ).
188247␛[36m$␛[0m git branch
189248* ␛[32mmaster␛[m
190249```
0 commit comments