Introduksjon til Løs merge-konflikt i GIT

Å håndtere bidrag for å løse konflikter mellom flere distribuerte utviklere er en av hovedjobbene til versjonskontrollsystemene. For å løse flettekonflikter, må vi først forstå hva det er. Den oppstår under sammenslåing av forskjellige versjoner av den samme koden og administreres av versjonskontrollsystemet, mest når en utvikler sletter en fil mens en annen utvikler fremdeles modifiserte den, eller når flere prøver å endre den samme linjen i en fil. I denne artikkelen får vi vite mer om Git-sammenslåingskonflikter, hva som forårsaker det og hvordan det kan løses.

Hva er flettingskonflikt i GIT?

Git har gjort sammenslåing veldig enkelt ettersom den automatisk integrerer nye endringer ved å bruke git merge-kommandoen. Men i tilfelle konflikter, er det bare utvikleren som fusjonerer, som er klar over konflikten, mens de andre ikke er klar over. Så det Git gjør er at det stopper sammenslåingsprosessen og flagger filen som konflikter. Utvikleren finner og løser konflikten. Konflikter under sammenslåing kan skje på nedenfor beskrevne måter:

  • Unnlatelse av å starte sammenslåingen

I tilfelle avvente på endringer i arbeidskatalogen til det nåværende prosjektet, kan en sammenslåing mislykkes da de kan overskrives av forpliktelsene mens de slås sammen. Men det kan stabiliseres ved hjelp av forskjellige git-kommandoer som git checkout / stash / reset / commit.

  • Feil under sammenslåing

Hvis det er en feil under sammenslåing, indikerer det at det er en konflikt mellom grenen som blir slått sammen og den nåværende grenen. Selv om Git prøver å slå sammen filene uten konflikter, men hvis det ikke er mulig, vil det overlate det til deg å løse dem manuelt.

Hvordan lage en konflikt for filfletting?

La oss ta et eksempel for å vise / løse flettekonflikt i GIT ved å bruke kommandolinjen Git-grensesnittet.

$ 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

La oss se linje for linje hva som skjer i kommandoutdraget ovenfor.

  • git-merge-test oppretter en ny katalog og initialiserer et nytt Git-lager.
  • Deretter lager du en tekstfil som heter new_merged.txt med noe skrevet på.
  • Legg til den nylagde teksten i repoen og begi den deretter.

Vi har nå et nytt depot med en hovedgren og en fil new_merged.txt med noe innhold i den. Deretter oppretter vi en annen gren som vil komme i konflikt med fusjonen.

$ 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(-)

For å bryte det ned til deg, linjene ovenfor:

  • oppretter og sjekker ut en newbranch som heter newbranch.
  • overskriver innholdet i filen new_merged.txt.
  • og forplikter til slutt det nyopprettede innholdet.

Med den nye grenen som heter en gren, opprettes en forpliktelse som overskriver innholdet i new_merged.txt

$ 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(+)

Ovennevnte kommandosekvens sjekker ikke bare hovedgrenen, legger til innhold til new_merged.txt, men begår det også til slutt. Nå har vårt eksempel 2 nye forpliktelser. En er i hovedgrenen, og det er en til i nybransjen. Nå git slå sammen newbranch for å se hva som skjer!

$ 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 viser oss at konflikt har dukket opp.

Løs flettingskonflikter i GIT

Redigering av den konfliktfylte filen er en av måtene å fjerne en sammenslåingskonflikt på. Bare åpne den konfliktfylte filen i redaktøren og fjern konfliktdelerne en etter en. Når du er redigert, kan du bruke git add for å legge til det endrede innholdet. En ny forpliktelse kan opprettes ved å utføre:

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

Git sikrer løsning av konflikten og skaper dermed en ny forpliktet fusjon for å fullføre den. Noen av Git-kommandoene som hjelper til med å løse flette konflikter er:

git log --merge

Sammenslåing - kort som er passert med git-logg-kommandoen produserer en liste over forpliktelser som er i konflikt mellom sammenslåtte grener.

git status

Det hjelper med å identifisere konfliktfiler.

git diff

Det hjelper med å finne forskjeller mellom tilstandene i et depot eller en fil. Det brukes til å forutsi og forhindre sammenslåingskonflikter. Noen verktøy som verktøyene nedenfor blir brukt når du starter en sammenslåingsfeil.

git reset --mixed

Det brukes til å angre endringene som er gjort i den gjeldende katalogen.

git checkout

Det brukes til å angre endringene i filer, eller oftere for å endre grener. Noen verktøy som de som er gitt nedenfor blir brukt når konflikter oppstår under en sammenslåing.

git reset

Det brukes til å tilbakestille konfliktfiler under en sammenslåingskonflikt.

git merge --abort

Å passere –kort argument med git merge gjør at man kan gå ut av fletteprosessen og returnere grenen til sin opprinnelige tilstand.

Fordeler med å løse Git Merge-konflikter

  • Det brukes til å opprette, endre, slette grener, filer eller depoter uten konflikter.
  • Den kan brukes til å slå sammen forskjellige versjoner av koden.
  • Det hjelper også til å gjøre endringer i og sjekke eksterne grener, samtidig som du unngår konflikter.
  • Det hjelper deg med å håndtere og håndtere utgivelser uten konflikter.
  • Holder depotet og prosessen ren og lesbar.

Konklusjon

Git har mange bruksområder og blir mye brukt av utviklere, produktledere og dataforskere. Git-kommandoer er veldig effektive og kan være veldig nyttige. En konflikt i git oppstår når to forskjellige grener prøver å redigere den samme linjen i en fil, eller en fil blir slettet i en bestemt gren, men redigert i en annen. Git håndterer de fleste av fusjonene med suksess med sine sammenslåingsfunksjoner, men det kan også løses manuelt ved hjelp av verktøy som git-status, git reset, git checkout og Git logg.

Anbefalte artikler

Dette er en guide til Løs merge konflikt i GIT. Her diskuterer vi hvordan du effektivt løser Git Merge Conflicts med forskjellige kommandoer sammen med fordelene. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -

  1. Git-alternativer med fordeler
  2. Introduksjon til Git Tools
  3. GitHub vs SVN - Topp forskjeller
  4. Topp 11 GIT-intervjuspørsmål
  5. Git Push
  6. Tableau-versjoner
  7. Komplett guide til Git-fjernkommando
  8. Tre stadier av Git-livssyklus med arbeidsflyten

Kategori: