Deprecated: Parsedown::blockSetextHeader(): Implicitly marking parameter $Block as nullable is deprecated, the explicit nullable type must be used instead in /var/www/html/lib/Parsedown.php on line 715

Deprecated: Parsedown::blockTable(): Implicitly marking parameter $Block as nullable is deprecated, the explicit nullable type must be used instead in /var/www/html/lib/Parsedown.php on line 853

Deprecated: ParsedownExtra::blockSetextHeader(): Implicitly marking parameter $Block as nullable is deprecated, the explicit nullable type must be used instead in /var/www/html/lib/ParsedownExtra.php on line 241
9. Git: merge konflikt (15 min)

9. Git: merge konflikt (15 min)

Výstup bloku: účastníci se konfliktu nebojí a umí ho vyřešit.

Co je konflikt (2 min)

Dva lidé změní stejné místo ve stejném souboru. Git neví, kterou verzi chce člověk zachovat, a rozhodnutí nechá na něm. Konflikt není chyba, je to běžná součást týmové práce.

Připravený příklad (3 min)

Lektor předem vloží do repozitáře soubor pravidla.md:

# Pravidla týmu

Denní synchronizace začíná v 9:00.

Všichni udělají git pull.

Vyvolání konfliktu (4 min)

Pracovat po dvojicích (A a B).

  1. A i B změní stejný řádek v pravidla.md:
    • A: Denní synchronizace začíná v 9:00 online.
    • B: Denní synchronizace začíná v 8:30 osobně.
  2. A commitne a pushne (projde).
  3. B commitne a pushne (odmítnuto) a provede git pull.
git add pravidla.md
git commit -m "Změní čas synchronizace"
git push        # odmítnuto
git pull        # CONFLICT (content): Merge conflict in pravidla.md

Řešení (6 min)

Soubor teď obsahuje značky:

<<<<<<< HEAD
Denní synchronizace začíná v 8:30 osobně.
=======
Denní synchronizace začíná v 9:00 online.
>>>>>>> origin/main

Postup:

  1. Domluvit se s kolegou, jak to má být (konflikt je rozhovor, ne souboj).
  2. Upravit soubor ručně na výsledné znění a smazat značky <<<<<<<, =======, >>>>>>>.
  3. Dokončit:
git add pravidla.md
git commit -m "Vyřeší konflikt: synchronizace v 9:00 online"
git push

Editory (VS Code) nabízejí u konfliktu tlačítka „Accept Current / Incoming / Both“. Použít, ale vždy zkontrolovat výsledek.

Jak konfliktům předcházet

Poznámky pro lektora