Johdatus yhdistämiskonfliktin ratkaisemiseen GIT: ssä

Monien hajautettujen kehittäjien välisten konfliktien ratkaisemiseen tarkoitettujen panosten hallinta on yksi versionhallintajärjestelmien päätehtävistä. Yhdistämisristiriitojen ratkaisemiseksi meidän on ensin ymmärrettävä, mikä se on. Se syntyy sulautettaessa saman koodin eri versioita, ja sitä hallitsee versionhallintajärjestelmä, lähinnä silloin, kun kehittäjä poistaa tiedoston, kun jokin muu kehittäjä oli vielä muokkaamassa sitä, tai kun useita ihmisiä yrittää muuttaa samaa riviä tiedostossa. Tässä artikkelissa opitaan lisää Git-yhdistämiskonflikteista, niiden syistä ja miten ne voidaan ratkaista.

Mikä on yhdistämiskonflikti GIT: ssä?

Git on tehnyt yhdistämisen erittäin helpoksi, koska se integroi uudet muutokset automaattisesti git merge -komennolla. Mutta konfliktien tapauksessa vain sulautuva kehittäjä on tietoinen konfliktista, kun taas muut eivät ole tietoisia. Joten mitä Git tekee, se keskeyttää yhdistämisprosessin ja merkitsee tiedoston ristiriitoiksi. Tämän jälkeen kehittäjä löytää ja ratkaisee konfliktin. Konfliktit sulautumisen aikana voivat tapahtua alla kuvatuilla tavoilla:

  • Yhdistämisen epäonnistuminen

Jos meneillään olevan projektin työhakemistossa odotetaan muutoksia, yhdistäminen voi epäonnistua, koska sitoumukset voivat korvata ne sulautumisen aikana. Mutta se voidaan vakauttaa käyttämällä erilaisia ​​git-komentoja, kuten git checkout / stash / reset / sitoutu.

  • Epäonnistuminen sulautumisen aikana

Jos sulautumisen aikana tapahtuu vika, se osoittaa, että sulautuvan sivukonttorin ja nykyisen sivukonttorin välillä on ristiriita. Vaikka Git yrittää yhdistää tiedostot ilman ristiriitoja, mutta jollei sitä voi tehdä, se jättää sinun ratkaista se manuaalisesti.

Kuinka luoda tiedostojen yhdistämisristiriita?

Otetaan esimerkki yhdistämiskonfliktin näyttämiseksi / ratkaisemiseksi GIT: ssä komentorivillä Git.

$ mkdir git-merge-test
$ cd git-merge-test
$ git init
$ echo "Mess with this content" > new_merged.txt
$ git add new_merged.txt
$ git commit -am"Committed the earlier content"
(master (root-commit) d58f73b) Committed the earlier content
1 file changed, 1 insertion(+)
create mode 200548 new_merged.txt

Katsotaan riviltä riville, mitä yllä olevassa komentokomennuksessa tapahtuu.

  • git-merge-test luo uuden hakemiston ja alustaa uuden Git-arkiston.
  • Luo seuraavaksi tekstitiedosto nimeltä new_merged.txt, johon on kirjoitettu jotain.
  • Lisää äskettäin tehty teksti repoon ja sitoa se sitten.

Meillä on nyt uusi arkisto, jossa on yksi päähaaro ja tiedosto new_merged.txt, jossa on jotain sisältöä. Sitten luomme toisen haaran, joka on ristiriidassa sulautumisen kanssa.

$ git checkout -b newbranch
$ echo "New content" > new_merged.txt
$ git commit -am"Same named file is edited to cause a conflict"
(newbranch 6282319) Same named file is edited to cause a conflict
1 file changed, 1 insertion(+), 1 deletion(-)

Edellä mainitut rivit jakavat sen sinulle:

  • luo ja tarkistaa newbranch nimeltään newbranch.
  • korvaa new_merged.txt-tiedoston sisällön.
  • ja lopulta sitouttaa vasta luodun sisällön.

Newbranchilla, jonka nimi on yksi haara, luodaan sitoumus, joka korvaa new_merged.txt-sisällön

$ git checkout master
Switched to branch 'master'
$ echo "Append" >> new_merged.txt
$ git commit -am"Content appended new_merged.txt"
(master 24fbe3c) Content appended new_merged.txt
1 file changed, 1 insertion(+)

Yllä oleva komentojenjakso ei vain tarkista päähaketta, lisää sisältöä new_merged.txt-tiedostoon, mutta myös sitouttaa sen loppuun. Nyt esimerkillämme on 2 uutta sitoumusta. Yksi on päähaarassa ja uutta on uusi. Yhdistä nyt uusi haara nähdäksesi mitä tapahtuu!

$ git merge newbranch
Auto-merging new_merged.txt
CONFLICT (content): Merge conflict in new_merged.txt
Automatic merge failed; fix conflicts and then commit the result.

Git osoittaa meille, että konflikti on ilmestynyt.

Yhdistämiskonflikttien ratkaiseminen GIT: ssä

Ristiriitaisen tiedoston muokkaaminen on yksi tapa poistaa yhdistämisristiriita. Avaa vain ristiriitainen tiedosto editorissa ja poista ristiriidat yksitellen. Kun muokattu, voit lisätä muokatun sisällön git add -sovelluksella. Uusi sitoutuminen voidaan luoda suorittamalla:

git commit -m "merged and resolved the conflict in "

Git varmistaa konfliktin ratkaisemisen ja luo siten uuden sitoutuneen sulautuman sen loppuunsaattamiseksi. Jotkut Git-komennot, jotka auttavat ratkaisemaan yhdistämisristiriitoja, ovat:

git log --merge

Git log -komennolla siirretty yhdistämisvaihtoehto tuottaa luettelon kompromisseista, jotka ovat ristiriidassa sulautuvien haarojen välillä.

git status

Se auttaa tunnistamaan ristiriidassa olevat tiedostot.

git diff

Se auttaa löytämään eroja arkiston tai tiedoston tilojen välillä. Sitä käytetään ennustamaan ja estämään yhdistämiskonflikteja. Joitakin alla annettuja työkaluja käytetään, kun yhdistäminen epäonnistuu.

git reset --mixed

Sitä käytetään kumoamaan nykyiseen hakemistoon tehdyt muutokset.

git checkout

Sitä käytetään tiedostojen muutosten kumoamiseen tai useammin oksien muuttamiseen. Joitakin alla annettuja työkaluja käytetään, kun ristiriitoja syntyy sulautumisen aikana.

git reset

Sitä käytetään ristiriidassa olevien tiedostojen nollaamiseen yhdistämiskonfliktin aikana.

git merge --abort

Hyväksymällä -abort-argumentti git-yhdistämällä mahdollistaa poistumisen yhdistämisprosessista ja palauttaa haaran alkuperäiseen tilaan.

Git-yhdistämiskonflikttien ratkaisemisen edut

  • Sitä käytetään oksien, tiedostojen tai arkistojen luomiseen, muokkaamiseen, poistamiseen ilman ristiriitoja.
  • Sitä voidaan käyttää koodin eri versioiden yhdistämiseen.
  • Se auttaa myös tekemään muutoksia etähaaroihin ja tarkistamaan etähaarat välttäen samalla ristiriitoja.
  • Se auttaa päästöjen hallintaa ja käsittelyä ilman konflikteja.
  • Pitää arkiston ja prosessin puhtaana ja luettavana.

johtopäätös

Gitillä on monia käyttötarkoituksia, ja kehittäjät, tuotepäälliköt ja tietotieteilijät käyttävät sitä laajasti. Git-komennot ovat erittäin tehokkaita ja voivat olla erittäin hyödyllisiä. Ristiriita gitissä syntyy, kun kaksi eri haaraa yrittää muokata samaa riviä tiedostossa tai tiedosto poistetaan tietyssä haarassa, mutta muokataan toisessa. Git käsittelee suurimman osan yhdistämisistä onnistuneesti yhdistämisominaisuuksilla, mutta se voidaan myös ratkaista manuaalisesti työkaluilla, kuten git status, git reset, git checkout ja Git log.

Suositellut artikkelit

Tämä on opas yhdistämiskonfliktin ratkaisemiseksi GIT: ssä. Tässä keskustellaan kuinka tehokkaasti voidaan ratkaista Git Merge -konfliktit eri komennoilla ja sen eduilla. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Git vaihtoehtoja edut
  2. Johdanto Git-työkaluihin
  3. GitHub vs SVN - tärkeimmät erot
  4. GIT-haastattelun 11 parasta kysymystä
  5. Git Push
  6. Tableau -versiot
  7. Täydellinen opas Git-kauko-ohjauksesta
  8. Git-elinkaaren kolme vaihetta työnkulun kanssa

Luokka: