Git je skvelý nástroj na správu verzií kódu, no pri práci vo väčších tímoch sa často stáva, že pri zlučovaní zmien vzniknú konflikty. Konflikty v Gite znamenajú, že Git nevie automaticky spojiť dve verzie súboru a vyžaduje manuálny zásah. V tomto článku si ukážeme, prečo vznikajú konflikty, ako ich riešiť a ako im predchádzať.
Konflikt v Gite nastáva, keď dve rôzne vetvy obsahujú zmeny v tom istom súbore na rovnakom riadku. Git nedokáže rozhodnúť, ktorá verzia je správna, a vyžaduje manuálne riešenie.
Najčastejšie dôvody vzniku konfliktov:
Ak sa pokúsite zlúčiť vetvu pomocou príkazu:
git merge feature-branch
Git môže zobraziť chybové hlásenie:
CONFLICT (content): Merge conflict in súbor.txt
To znamená, že v súbore súbor.txt
vznikol konflikt.
Ak chcete vidieť zoznam súborov s konfliktami, použite príkaz:
git status
Výstup môže vyzerať takto:
both modified: súbor.txt
V problematickom súbore Git označí konfliktné časti takto:
<<<<<<< HEAD Toto je vaša aktuálna verzia kódu. ======= Toto je verzia z feature-branch. >>>>>>> feature-branch
Vašou úlohou je vybrať správnu verziu, alebo ich manuálne zlúčiť:
Toto je správna verzia kódu po riešení konfliktu.
Po vyriešení konfliktov pridajte súbor do Gitu:
git add súbor.txt
Potom dokončite merge príkazom:
git commit -m "Riešenie konfliktu pri merge"
Skontrolujte stav repozitára:
git status
Ak už Git nehlási žiadne konflikty, merge bol úspešne dokončený.
Konflikty v Gite sú bežné, ale existujú spôsoby, ako ich minimalizovať:
git pull
.git diff
.Ak chcete zrušiť vyriešenie konfliktu a vrátiť sa späť, použite:
git merge --abort
git rebase main
Počas rebase môže Git požiadať o manuálne riešenie konfliktov podobne ako pri merge.
V niektorých prípadoch môžete použiť:
git merge -X ours feature-branch
alebo
git merge -X theirs feature-branch
Tieto príkazy vyberú konkrétnu verziu kódu bez manuálneho zásahu.
git stash
alebo commit.Ak máte záujem o prezenčné alebo online školenie programovania, pozrite si našu ponuku na www.like-it.sk. Naše kurzy vedú skúsení odborníci, ktorí vás naučia programovať od základov až po pokročilé techniky.
Viac informacií preberáme na kurze: