Programování

Git merge konflikty - jak na ně s vizuálními nástroji

21. ledna 2026
10 min čtení
Gitmerge conflictsdiffnástrojeprogramováníVS Code

Merge konflikt - ta chvíle kdy git hlásí CONFLICT a ty nevíš co s tím. Na začátku jsem to řešil ručně v terminálu, což byla otrava. Teď používám vizuální nástroje a je to mnohem rychlejší.

Kdy konflikt vznikne

Git neumí rozhodnout sám, když:

  • Dva lidi upravili stejný řádek - kolega změnil funkci, já taky
  • Soubor smazaný vs upravený - já refaktoruju, kolega maže
  • Různé přejmenování - oba jsme přejmenovali stejný soubor jinak
  • Binární soubory - obrázky, PDF se automaticky sloučit nedají

Anatomie merge konfliktu

Když nastane konflikt, Git označí problematické části speciálními markery:

<<<<<<< HEAD
// Váš kód (aktuální větev)
function calculate(x) {
    return x * 2;
}
=======
// Příchozí kód (mergovaná větev)
function calculate(x, y) {
    return x + y;
}
>>>>>>> feature-branch

Co markery znamenají

  • <<<<<<< HEAD – začátek vašeho kódu (HEAD = aktuální pozice)
  • ======= – oddělovač mezi verzemi
  • >>>>>>> feature-branch – konec příchozího kódu s názvem větve

Vizuální nástroje pro řešení konfliktů

1. Visual Studio Code

VS Code nabízí nejpřístupnější řešení přímo v editoru.

Funkce:

  • Barevné zvýraznění konfliktních sekcí
  • Tlačítka "Accept Current", "Accept Incoming", "Accept Both"
  • 3-way merge view pro komplexní konflikty
  • Integrace s GitLens pro zobrazení autorů

Postup:

  1. Otevřete soubor s konfliktem
  2. VS Code automaticky detekuje konflikt a nabídne akce
  3. Klikněte na požadovanou akci nebo ručně editujte
  4. Uložte soubor a označte konflikt jako vyřešený: git add soubor.ts
# Po vyřešení všech konfliktů
git add .
git commit -m "Merge feature-branch: resolve conflicts"

2. IntelliJ IDEA / WebStorm

JetBrains IDE nabízí sofistikovaný 3-way merge editor.

Výhody:

  • Tři panely: Local, Base, Remote
  • Inteligentní návrhy na sloučení
  • Sémantické porozumění kódu
  • Historie změn přímo v merge dialogu

Postup:

  1. VCS → Git → Resolve Conflicts
  2. Vyberte soubor a klikněte "Merge"
  3. Použijte šipky pro přijetí změn
  4. Výsledek se zobrazuje v prostředním panelu

3. GitKraken

Grafický Git klient s přehledným merge rozhraním.

Funkce:

  • Vizuální graf větví
  • Integrovaný merge tool
  • Drag-and-drop řešení konfliktů
  • Undo pro chybná rozhodnutí

Vhodný pro:

  • Vývojáře preferující GUI
  • Komplexní merge s mnoha konflikty
  • Týmy s méně zkušenými Git uživateli

4. Sublime Merge

Rychlý a elegantní nástroj od tvůrců Sublime Text.

Výhody:

  • Bleskově rychlé načítání
  • Čisté rozhraní
  • Command palette pro rychlé akce
  • Vynikající syntax highlighting

5. Meld (Linux/macOS/Windows)

Open-source nástroj pro porovnání a sloučení.

# Instalace
sudo apt install meld  # Ubuntu/Debian
brew install meld      # macOS

# Nastavení jako Git merge tool
git config --global merge.tool meld

6. Beyond Compare

Profesionální nástroj s pokročilými funkcemi.

Funkce:

  • Porovnání adresářů
  • FTP/SFTP podpora
  • Pravidla pro ignorování změn
  • Skripty pro automatizaci

Konfigurace Git merge tool

Nastavte preferovaný nástroj globálně:

# VS Code
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'

# IntelliJ IDEA
git config --global merge.tool idea
git config --global mergetool.idea.cmd 'idea merge $LOCAL $REMOTE $BASE $MERGED'

# Meld
git config --global merge.tool meld

# Beyond Compare
git config --global merge.tool bc
git config --global mergetool.bc.path '/usr/local/bin/bcomp'

Spuštění merge tool:

git mergetool

Strategie pro řešení konfliktů

1. Prevence je nejlepší lék

Časté pull:

git pull origin main --rebase

Malé commity: Častější, menší commity znamenají méně konfliktů.

Komunikace v týmu: "Budu refaktorovat auth modul" – dejte kolegům vědět.

2. Rebase vs Merge

Merge (zachovává historii):

git checkout feature
git merge main

Rebase (čistší historie):

git checkout feature
git rebase main

Rebase může vyžadovat řešení konfliktu pro každý commit zvlášť, ale výsledná historie je lineární.

3. Abort když je to nutné

Pokud se situace zkomplikuje:

# Zrušení merge
git merge --abort

# Zrušení rebase
git rebase --abort

4. Použijte diff před merge

Před mergem si prohlédněte změny:

git diff main...feature

Řešení běžných scénářů

Konflikt v package.json / package-lock.json

# Přijměte jednu verzi a regenerujte
git checkout --theirs package-lock.json
npm install
git add package-lock.json

Konflikt v migračních souborech (DB)

Nikdy nemergujte migrační soubory ručně. Vytvořte novou migraci:

git checkout --ours migrations/
npx prisma migrate dev --name merge_fix

Konflikt v auto-generovaných souborech

# Přijměte jejich verzi a regenerujte
git checkout --theirs generated/
npm run generate
git add generated/

Tipy pro efektivní práci

1. Naučte se klávesové zkratky

VS Code:

  • Ctrl+Shift+G – Git panel
  • Alt+3 – Compare changes

IntelliJ:

  • Ctrl+K – Commit
  • Alt+9 – Git log

2. Používejte staging area

# Řešte konflikty po jednom souboru
git add soubor1.ts
# ... vyřešte další konflikty
git add soubor2.ts

3. Dokumentujte komplexní merge

git commit -m "Merge feature/payment-v2: resolve conflicts

- Kept new validation logic from feature branch
- Preserved error handling from main
- Combined both approaches for retry mechanism"

4. Code review po merge

Po složitém merge proveďte důkladné testování a code review.

Online nástroje pro porovnání

Někdy potřebujete rychle porovnat dvě verze kódu mimo Git. PorovnejText.cz/code-diff nabízí:

  • Syntax highlighting pro 22+ jazyků
  • Porovnání bez instalace
  • Zpracování přímo v prohlížeči
  • Žádné ukládání na server

Závěr

Merge konflikty nemusí být noční můrou. Správné nástroje a postupy z nich udělají rutinní záležitost:

  1. Vyberte si vizuální nástroj – VS Code pro jednoduchost, IntelliJ pro komplexní projekty
  2. Konfigurujte Git – nastavte preferovaný merge tool globálně
  3. Prevence – časté pull, malé commity, komunikace
  4. Nebojte se abort – vždy můžete začít znovu
  5. Dokumentujte – komplexní merge zaslouží popisný commit message

Potřebujete rychle porovnat dvě verze kódu? Vyzkoušejte PorovnejText.cz/code-diff – vizuální porovnání s barevným zvýrazněním změn, přímo v prohlížeči.

Vyzkoušejte PorovnejText.cz zdarma

Nejrychlejší český nástroj pro porovnání textů. Vše probíhá ve vašem prohlížeči, žádná registrace není potřeba.

Porovnat texty nyní →