Sobes.tech
Junior

Ako vyriešiť konflikty v Gite?

sobes.tech AI

Odpoveď od AI

Konflikty v Git nastajajo, ko dva udeleženca spremenita isti del datoteke ali ko eden izbriše datoteko, drugi pa jo spremeni.

Za reševanje konfliktov običajno izvedemo naslednje korake:

  1. Posodobitev lokalnega repozitorija: Prepričajte se, da imate najnovejšo različico kode iz oddaljenega repozitorija.

    // Prenos najnovejših sprememb iz oddaljenega repozitorija
    git pull origin <branch-name>
    
  2. Identifikacija konfliktnih datotek: Git bo sporočil, v katerih datotekah so nastali konflikti.

    // Prikaz stanja repozitorija in konfliktnih datotek
    git status
    

    V datotekah boste videli oznake konfliktov, na primer:

    <<<<<<< HEAD
    // Vaše lokalne spremembe
    =======
    // Prihajajoče spremembe iz oddaljene veje
    >>>>>>> <commit-hash>
    
    • <<<<<<< HEAD: začetek vaših lokalnih sprememb.
    • =======: ločilo med vašimi spremembami in prihajajočimi.
    • >>>>>>> <commit-hash>: konec prihajajočih sprememb z oznako hasha komita.
  3. Ročno urejanje datotek: Odprite konfliktno datoteko v besedilnem urejevalniku in ročno odstranite oznake konfliktov, pri čemer pustite le potrebno kodo. Odločiti se morate, katero različico kode želite ohraniti ali jih združiti.

  4. Dodajanje popravljenih datotek: Po rešitvi konflikta v datoteki jo dodajte v indeks.

    // Dodajte rešeno datoteko v indeks
    git add <conflicted-file>
    

    Ponovite ta korak za vse konfliktne datoteke.

  5. Ustvarjanje komita za rešitev konflikta: Po dodajanju vseh rešitev ustvarite komit. Git bo samodejno predlagal sporočilo komita, ki kaže, da je konflikt rešen.

    // Ustvarite komit za rešitev konflikta
    git commit
    

    To sporočilo lahko uredite pred shranjevanjem.

  6. Pošiljanje sprememb: Pošljite rešenih spremembe na oddaljeni repozitorij.

    // Pošljite spremembe na oddaljeni repozitorij
    git push origin <branch-name>
    

Orodja za reševanje konfliktov:

Za udobje lahko uporabite grafična orodja za združevanje, kot so:

  • Kdiff3
  • Meld
  • VS Code Merge Editor
  • IDE (IntelliJ IDEA, PyCharm itd.) z vgrajenimi orodji

Za nastavitev zunanjega orodja za reševanje konfliktov:

// Nastavitev zunanjega orodja za združevanje (primer za opendiff)
git config --global merge.tool opendiff
// Zagon orodja
git mergetool

Pomembno je, da pravočasno pridobivanje sprememb iz oddaljenega repozitorija (git pull) pomaga zmanjšati število konfliktov.