Teraz si vyskúšaš všetko, čo sme si povedali v kapitolách 8 až 11, na jednom pripravenom repozitári.
Namiesto zip súboru si repozitár vygeneruješ priamo pomocou pripraveného skriptu - vďaka tomu presne vidíš, ako história vznikla, a vieš si cvičenie kedykoľvek zopakovať od začiatku.
bash priprav_repo.sh
cd git-rebase-cvicenie
git log --oneline --all --graph
Uvidíš 8 commitov na main a jeden dodatočný commit na vetve feature/typovanie, ktorá odbočuje hneď za Init.
Posledný commit (Pridanie typov k funkcii add (float)) zabudol k funkcii add pridať aj krátky komentár.
Do súboru kalkulacka.py pridaj riadok # Vypocita sucet dvoch cisel nad definíciu funkcie a zmenu ulož do
tohto istého, posledného commitu pomocou git commit --amend, bez zmeny commit message.
Teraz naraz oprav históriu commitov Init až Pridanie hlavnej funkcie main - všetkých 7 commitov, ktoré
predchádzajú tomu, čo si upravoval v kroku 1. Keďže medzi nimi je aj úplne prvý commit (Init), použi:
git rebase -i --root
V otvorenom zozname uprav príkazy tak, aby:
docasny debug vypis bol zahodený (drop)pridanie funkcie nasobenie - preklep v sprave mal prepísanú správu (reword) na
Pridanie funkcie násobeniewip: zaciatok delenia a wip 2: osetrenie delenia nulou boli zlúčené (squash) do jedného,
s výslednou správou Pridanie deleniaPridanie hlavnej funkcie main (edit), aby si doňho mohol pridať zabudnutý
testovací súborVýsledný zoznam pred uložením teda uprav približne takto:
pick <hash> Init
pick <hash> Pridanie odcitania
drop <hash> docasny debug vypis
reword <hash> pridanie funkcie nasobenie - preklep v sprave
pick <hash> wip: zaciatok delenia
squash <hash> wip 2: osetrenie delenia nulou
edit <hash> Pridanie hlavnej funkcie main
Po uložení zoznamu ťa Git postupne vyzve na:
Pridanie funkcie násobenie)Pridanie delenia)main.py - tu vytvor súbor test_kalkulacka.py:from kalkulacka import add
assert add(2, 3) == 5
print("OK")
pridaj ho do zastaveného commitu a pokračuj:
git add test_kalkulacka.py
git commit --amend --no-edit
git rebase --continue
Na konci si históriu skontroluj pomocou git log --oneline - mala by obsahovať 6 commitov namiesto pôvodných 8.
Nakoniec skús spojiť vetvu feature/typovanie s main:
git checkout feature/typovanie
git rebase main
Keďže obe vetvy menia tú istú signatúru funkcie add (raz na int, raz na float), Git ti nahlási konflikt
v súbore kalkulacka.py.
kalkulacka.py a rozhodni sa pre finálnu verziu (napríklad ponechaj float, keďže je všeobecnejšia)git add kalkulacka.pygit rebase --continueTip: Ak sa v priebehu cvičenia zamotáš, nič sa nedeje -
git rebase --abortťa vždy vráti do stavu pred spustením rebase a môžeš skúsiť znova. V najhoršom prípade skriptpriprav_repo.shspusti znova, čím repozitár vygeneruješ nanovo.