Yhdistämiskonfliktien manuaalinen ratkaiseminen
Oppikaa tunnistamaan ja ratkaisemaan manuaalisesti yhdistämiskonfliktit, joita syntyy toisistaan eriytyneiden haarojen integroinnissa.
Yhdistämiskonfliktien manuaalinen ratkaiseminen on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Merge-konfliktien ymmärtäminen
Tervetuloa merge-konfliktien pariin! Älkää huoliko, ne ovat normaali osa yhteistyötä Gitillä. Merge-konflikti syntyy, kun Git ei pysty automaattisesti päättelemään, miten kahden eri haaran muutokset yhdistetään.
Näin käy yleensä, kun kaksi haaraa muuttaa samoja rivejä samassa tiedostossa eri tavoin tai kun yksi haara poistaa tiedoston, jota toinen haara on muokannut.
Miksi konflikteja syntyy
Git on erittäin tehokas yhdistämään useimmat muutokset automaattisesti. Epäselvissä tilanteissa se tarvitsee kuitenkin ihmisen apua. Yleisiä tilanteita ovat:
- Sama rivi, erilaiset muutokset: Kaksi henkilöä muokkaa täsmälleen samaa koodiriviä eri tavoin.
- Toinen poistaa, toinen muokkaa: Yksi haara poistaa tiedoston, kun taas toinen haara muokkaa sitä.
- Uudelleennimeäminen ja muokkaaminen: Tiedosto nimetään uudelleen yhdessä haarassa ja sitä muokataan toisessa.
Konfliktien tunnistaminen Gitillä
Kun merge-konflikti syntyy, Git ei vie mergeä automaattisesti loppuun. Sen sijaan se keskeyttää prosessin ja ilmoittaa, missä tiedostoissa on konflikteja. Näette esimerkiksi tämänkaltaisen viestin:
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.`git status`-komennon käyttö konfliktien tarkistamiseen
Kun automaattinen merge epäonnistuu, repositorio on ”merging”-tilassa. Komennolla git status voitte tarkistaa, missä tiedostoissa on konflikteja. Nämä tiedostot luetellaan ”unmerged paths” -kohdassa.
git statusKonfliktimerkintöjen tulkitseminen
Git lisää erityiset merkinnät suoraan konfliktin sisältäviin tiedostoihin osoittaakseen, missä ongelma on. Näiden merkintöjen avulla tunnistatte koodin eri versiot:
<<<<<<< HEAD: Merkitsee nykyisen haaran muutosten alkukohdan.=======: Erottaa kahden haaran muutokset toisistaan.>>>>>>> branch-name: Merkitsee saapuvan haaran muutosten loppukohdan.
Konfliktin sisältävän tiedoston rakenne
Tarkastellaan esimerkkiä. Kuvitelkaa, että teillä on tiedosto hello.txt. Olette muuttaneet sen haarassa main muotoon ”Hello from main”, ja haara feature on muuttanut saman rivin muotoon ”Greetings from feature”. Kun feature yhdistetään haaraan main, tiedosto näyttää tältä:
<<<<<<< HEAD
Hello from main
=======
Greetings from feature
>>>>>>> featureKonfliktin ratkaiseminen manuaalisesti
Tehtävänänne on avata konfliktin sisältävä tiedosto (esimerkiksi hello.txt) tekstieditorissa. Muokatkaa sitten tiedostoa manuaalisesti, poistakaa konfliktimerkinnät ja valitkaa haluamanne sisältö. Voitte yhdistää osia, valita toisen version tai kirjoittaa jotain kokonaan uutta.
Jos haluamme hello.txt-esimerkissämme molemmat viestit, voisimme muokata tiedoston esimerkiksi tällaiseksi:
Hello from main and Greetings from feature!Ratkaistujen muutosten valmistelu
Kun olette muokanneet tiedostoa manuaalisesti ja poistaneet kaikki konfliktimerkinnät, Gitille on ilmoitettava, että konflikti on ratkaistu. Tämä tehdään lisäämällä tiedosto staging-alueelle komennolla git add.
Toistakaa tämä jokaiselle tiedostolle, jonka git status luettelee ”unmerged paths” -kohdassa.
git add hello.txtMerge-comitin viimeistely
Kun kaikki konfliktin sisältävät tiedostot on lisätty staging-alueelle, merge voidaan commitoida. Git tarjoaa yleensä oletusviestin merge-commitille, jonka voitte hyväksyä tai jota voitte muokata. Tämä viimeinen commit vie merge-prosessin päätökseen.
git commit -m "Merged feature branch, resolved conflict in hello.txt"Konfliktinratkaisun tarkistus
Olette ratkaisseet merge-konfliktin onnistuneesti. Testataan nyt, miten hyvin ymmärrätte seuraavan tärkeän vaiheen konfliktin sisältävän tiedoston manuaalisen muokkauksen jälkeen.
Kertaus: ristiriitojen ratkaiseminen manuaalisesti
Olette oppineet ratkaisemaan yhdistämisristiriitoja manuaalisesti! Se on jokaiselle kehittäjälle tärkeä perustaito.
- Ristiriitoja syntyy, kun Git ei pysty yhdistämään muutoksia automaattisesti.
git statusnäyttää yhdistämättä jääneet tiedostot.- Ristiriitamerkit (
<<<<<<<,=======,>>>>>>>) osoittavat toisistaan poikkeavan koodin. - Muokatkaa tiedostoja manuaalisesti, poistakaa merkit ja valitkaa lopullinen sisältö.
- Lisätkää ratkaistut tiedostot valmistelualueelle komennolla
git add. - Viimeistelkää yhdistäminen komennolla
git commit.
Harjoitus tekee mestarin! Ristiriidat saattavat aluksi vaikuttaa pelottavilta, mutta näiden vaiheiden avulla opitte hallitsemaan ne.
Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 142
- Oppitunnit
- 568
Usein kysytyt kysymykset
Onko oppitunti ”Yhdistämiskonfliktien manuaalinen ratkaiseminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Yhdistämiskonfliktien manuaalinen ratkaiseminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yhdistämiskonfliktien manuaalinen ratkaiseminen”?
Oppikaa tunnistamaan ja ratkaisemaan manuaalisesti yhdistämiskonfliktit, joita syntyy toisistaan eriytyneiden haarojen integroinnissa. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Yhdistämiskonfliktien manuaalinen ratkaiseminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?
Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yhdistämiskonfliktien manuaalinen ratkaiseminen
- Interaktiivinen rebase historian muokkaamiseen
- Commitien cherry-pick
- Git Rereren käyttö konfliktien ratkaisujen uudelleenkäyttöön