Merge conflict
Video
Suurema konflikti lahendamine
Vahel juhtub nii, et merge conflict on väga suur ning konflikte ei õnnestu GitLabis otse lahendada. Sellisel juhul on üks võimalus toimida järgnevalt:
Ava Pycharm
Mine merge request-i harusse
Merge’i main haru merge request-i harusse
Pycharm avab akna, kus saad valida millist koodi tahad alles jätta ja millist asendada
Vali muudatused, mis peaksid alles jääma ning commit + push need
Vii merge request lõpuni
Video PyCharmilt
Praktilised ülesanded merge conflictide tekitamise ja lahendamise kohta
Eesmärk: Õpi, kuidas lahendada merge konflikte, mis tekivad, kui erinevates harudes on tehtud vastuolulisi muudatusi, kasutades PyCharmi graafilist liidest.
Projekt, millega ülesandeid lahendada: https://gitlab.cs.ttu.ee/iti0105-2024/git-workshop
Juhised projekti kloonimiseks/forkimiseks leiad siit.
1. Juhised IDE jaoks:
Konflikti tekitamine:
- Loo uus haru nimega conflict-branch, mille kohta on juhend siin: Add-commit-push workflow
Kasuta eelnevalt õpitud teadmisi ning loo uus branch nimega conflict-branch.
Veendu, et peale uue branchi loomist, jätkad töö tegemist loodud branchis.
- Tee muudatus failis myfile.txt:
Avage fail myfile.txt ja tee sinna mõni muudatus (näiteks lisa uus rida tekstiga).
Salvesta fail (Ctrl + S).
- Commit'i muudatused conflict-branch harule:
Paremklõpsake failil ja valige Git > Commit....
Sisesta commit'i sõnum (näiteks "Muudatus conflict-branch'is").
Vajutage Commit.
Tagasi põhiharule (main) vahetamine ja muudatuste tegemine:
Liikuge tagasi main harule.
Avage fail myfile.txt ja tehke selles teine muudatus, mis on vastuolus conflict-branch haru muudatustega (näiteks muutke sama rida, mida muutsid conflict-branch harus).
Salvesta fail ja commit'i muudatus main harus.
Harude ühendamine ja konflikti tekkimine:
Kasuta eelnevalt õpitud teadmisi ning proovi conflict-branch merge'ida põhiharuga main.
PyCharm tuvastab konflikti ja kuvab teate, et konflikt on tekkinud.
Konflikti lahendamine PyCharmi abil:
PyCharm kuvab konflikti lahendamiseks dialoogiakna.
Klõpsake failil, millel on konflikt (näiteks myfile.txt), ja valige Merge.
- Avaneb kolme aknaga vaade:
Vasak aken: Teie muudatused main harus.
Parem aken: Muudatused conflict-branch harus.
Alumine aken: Lõplik lahendus, mida soovite salvestada.
Valige, millised muudatused soovite säilitada või ühendage need käsitsi, redigeerides alumist akent.
Kui olete konfliktid lahendanud, klõpsake Apply ja seejärel Commit Merge nuppu.
Lahendatud muudatuste commit'imine ja push'imine:
Pärast konflikti lahendamist salvestab PyCharm muudatused automaatselt.
- Commit'i lahendatud konflikt:
Kui lahendamise käigus ei olnud automaatset commit'i, valige ülemisest menüüst Git > Commit....
Sisestage sobiv commit'i sõnum, näiteks "Lahendatud merge konflikt".
Vajutage Commit.
- Push'i lahendatud commit GitLab'i:
Vali ülemisest menüüst Git > Push....
Kontrollige, et kõik commit'id on valitud, ja vajutage Push nuppu.
Kinnita GitLab'is:
Avage oma GitLab'i repositoorium veebibrauseris ja veenduge, et konflikt on lahendatud ja kõik muudatused on edukalt üles laetud.
2. Juhised terminali jaoks:
Konflikti tekitamine:
Loo uus haru nimega conflict-branch ja vaheta sellele:
git checkout -b conflict-branch
Tee muudatus failis myfile.txt:
nano myfile.txt
Commit'i muudatused conflict-branch harule:
git add myfile.txt
git commit -m "Muudatus conflict-branch'is"
Tagasi põhiharule (main) vahetamine ja muudatuste tegemine:
Vaheta tagasi main harule:
git checkout main
Tee vastuoluline muudatus failis myfile.txt:
nano myfile.txt
Muuda sama kohta failis, mida muutsid conflict-branch harus. Salvesta ja välju.
Commit'i muudatused main harus:
git add myfile.txt
git commit -m "Vastuoluline muudatus main harus"
Harude ühendamine ja konflikti tekkimine:
Proovi merge'ida conflict-branch main harus:
Git tuvastab konflikti ja kuvab teate.
Konflikti lahendamine terminalis:
Ava konfliktne fail:
nano myfile.txt
Failis näed konfliktimärkmeid:
<<<<<<< HEAD
Teie muudatused `main` harus
=======
Muudatused `conflict-branch` harus
>>>>>>> conflict-branch
Lahenda konflikt, valides sobivad muudatused või ühendades need. Eemalda konfliktimärgendid (<<<<<<<, =======, >>>>>>>).
Salvesta fail ja välju.
Lahendatud muudatuste commit'imine ja push'imine:
Lisa lahendatud fail ja commiti muudatused:
git add myfile.txt
git commit -m "Lahendatud merge konflikt"
Push'i uuendatud main haru:
git push origin main
Kinnita GitLab'is:
Ava oma GitLab'i repositoorium veebibrauseris ja veendu, et konflikt on lahendatud ning kõik muudatused on edukalt üles laetud.