Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Yhdistämisristiriitojen Ratkaiseminen | Työskentely Haarojen Kanssa Gitissä
Git Essentials

bookYhdistämisristiriitojen Ratkaiseminen

Konfliktien korjaaminen

Edellisessä luvussa kohtasimme yhdistämiskonfliktin, joten nyt on aika korjata se. Avataan ensin branch_learning.txt-tiedosto Vim-editorilla seuraavalla komennolla:

Jos sinulla ei ole Vim-editoria asennettuna, voit käyttää muita tekstieditoreita, kuten nano tai atom (korvaa vim editorisi nimellä yllä olevassa komennossa). Suosittelemme kuitenkin käyttämään Vim-editoria, sillä sen avulla ohjeiden seuraaminen on huomattavasti helpompaa.

Tältä tiedostomme näyttää avattuna Vim-editorissa:

Nyt näemme merkinnät, jotka osoittavat ristiriitaiset kohdat. Nämä merkinnät esitetään nuolilla ja erikoismerkeillä korostaen eri haarojen muutoksia. Konfliktimerkinnät ovat seuraavat:

  • <<<<<<< HEAD: Ilmaisee nykyisen haaran (tässä tapauksessa master) muutosten alun;
  • =======: Erottelee nykyisen haaran (HEAD) muutokset yhdistettävän haaran muutoksista;
  • >>>>>>> feature/new-feature: Merkitsee yhdistettävän haaran muutosten lopun.

Konfliktit voidaan ratkaista valitsemalla joko nykyisen haaran (master) muutokset, yhdistettävän haaran (feature/new-feature) muutokset tai muokkaamalla muutokset manuaalisesti.

Muokataan muutokset manuaalisesti yhdistämällä molempien haarojen muutokset seuraavien vaiheiden mukaisesti:

1. Siirry muokkaustilaan

Ensin täytyy siirtyä insert (muokkaus) -tilaan Vim-editorissa painamalla i. Tämä mahdollistaa tekstin muokkaamisen.

2. Muokkaa ristiriitaista osiota

Seuraavaksi yhdistetään molempien haarojen rivit peräkkäin, jolloin tiedoston lopullinen sisältö on seuraava:

3. Poistu muokkaustilasta, tallenna ja sulje:

Poistuaksesi insert-tilasta, paina Escape-näppäintä. Tämän jälkeen tallenna muutokset ja poistu kirjoittamalla :wq ja painamalla Enter-näppäintä:

Tiedoston kommitointi

Koska ristiriidat on ratkaistu, lisätään nyt branch_learning.txt staging-alueelle ja tarkistetaan tila:

Tiedostoa on muokattu ja se on lisätty staging-alueelle. Voimme nyt jatkaa kommitointiin:

Jälleen kerran oletustekstieditori avautuu (Vim tässä tapauksessa) oletuskommitviestin kanssa, joka liittyy yhdistämiseen:

Siirry insert-tilaan Vimissä painamalla i ja muokkaa tätä viestiä lisäämällä seuraava rivi: Kept lines from both branches määrittääksesi, miten ratkaisimme konfliktit. Tässä on koko commit-viesti:

Poistuaksesi insert-tilasta, tallenna muutokset ja poistu Vimistä painamalla Escape-näppäintä, kirjoita :wq ja paina Enter-näppäintä.

Commit onnistui ja yhdistämiskonflikti on nyt ratkaistu.

Tarkastellaan nyt commit-historiaamme graafina (--graph-valitsin) siten, että jokainen commit näkyy yhdellä rivillä (--oneline-valitsin):

Tässä näemme viimeisimmän merge-commitin sekä kolmisuuntaisen yhdistämisen tunnusomaisen muodon.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.57

bookYhdistämisristiriitojen Ratkaiseminen

Pyyhkäise näyttääksesi valikon

Konfliktien korjaaminen

Edellisessä luvussa kohtasimme yhdistämiskonfliktin, joten nyt on aika korjata se. Avataan ensin branch_learning.txt-tiedosto Vim-editorilla seuraavalla komennolla:

Jos sinulla ei ole Vim-editoria asennettuna, voit käyttää muita tekstieditoreita, kuten nano tai atom (korvaa vim editorisi nimellä yllä olevassa komennossa). Suosittelemme kuitenkin käyttämään Vim-editoria, sillä sen avulla ohjeiden seuraaminen on huomattavasti helpompaa.

Tältä tiedostomme näyttää avattuna Vim-editorissa:

Nyt näemme merkinnät, jotka osoittavat ristiriitaiset kohdat. Nämä merkinnät esitetään nuolilla ja erikoismerkeillä korostaen eri haarojen muutoksia. Konfliktimerkinnät ovat seuraavat:

  • <<<<<<< HEAD: Ilmaisee nykyisen haaran (tässä tapauksessa master) muutosten alun;
  • =======: Erottelee nykyisen haaran (HEAD) muutokset yhdistettävän haaran muutoksista;
  • >>>>>>> feature/new-feature: Merkitsee yhdistettävän haaran muutosten lopun.

Konfliktit voidaan ratkaista valitsemalla joko nykyisen haaran (master) muutokset, yhdistettävän haaran (feature/new-feature) muutokset tai muokkaamalla muutokset manuaalisesti.

Muokataan muutokset manuaalisesti yhdistämällä molempien haarojen muutokset seuraavien vaiheiden mukaisesti:

1. Siirry muokkaustilaan

Ensin täytyy siirtyä insert (muokkaus) -tilaan Vim-editorissa painamalla i. Tämä mahdollistaa tekstin muokkaamisen.

2. Muokkaa ristiriitaista osiota

Seuraavaksi yhdistetään molempien haarojen rivit peräkkäin, jolloin tiedoston lopullinen sisältö on seuraava:

3. Poistu muokkaustilasta, tallenna ja sulje:

Poistuaksesi insert-tilasta, paina Escape-näppäintä. Tämän jälkeen tallenna muutokset ja poistu kirjoittamalla :wq ja painamalla Enter-näppäintä:

Tiedoston kommitointi

Koska ristiriidat on ratkaistu, lisätään nyt branch_learning.txt staging-alueelle ja tarkistetaan tila:

Tiedostoa on muokattu ja se on lisätty staging-alueelle. Voimme nyt jatkaa kommitointiin:

Jälleen kerran oletustekstieditori avautuu (Vim tässä tapauksessa) oletuskommitviestin kanssa, joka liittyy yhdistämiseen:

Siirry insert-tilaan Vimissä painamalla i ja muokkaa tätä viestiä lisäämällä seuraava rivi: Kept lines from both branches määrittääksesi, miten ratkaisimme konfliktit. Tässä on koko commit-viesti:

Poistuaksesi insert-tilasta, tallenna muutokset ja poistu Vimistä painamalla Escape-näppäintä, kirjoita :wq ja paina Enter-näppäintä.

Commit onnistui ja yhdistämiskonflikti on nyt ratkaistu.

Tarkastellaan nyt commit-historiaamme graafina (--graph-valitsin) siten, että jokainen commit näkyy yhdellä rivillä (--oneline-valitsin):

Tässä näemme viimeisimmän merge-commitin sekä kolmisuuntaisen yhdistämisen tunnusomaisen muodon.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6
some-alt