Introduktion til Løs fletningskonflikt i GIT

Håndtering af bidrag til løsning af konflikter blandt flere distribuerede udviklere er et af de vigtigste job i versionskontrolsystemerne. For at løse flettekonflikter skal vi først forstå, hvad det er nøjagtigt. Det opstår under sammenlægning af forskellige versioner af den samme kode og administreres af versionskontrolsystemet, mest når en udvikler sletter en fil, mens en anden udvikler stadig modificerede den, eller når flere mennesker forsøger at ændre den samme linje i en fil. I denne artikel får vi mere at vide om Git-fletningskonflikter, hvad der forårsager det, og hvordan det kan løses.

Hvad er fletningskonflikt i GIT?

Git har gjort sammenlægningen meget let, da den automatisk integrerer nye ændringer ved hjælp af kommandoen git merge. Men i tilfælde af konflikter er det kun udvikleren, der fusionerer, som er opmærksom på konflikten, mens de andre ikke er opmærksomme. Så hvad Git gør, er, det stopper fusioneringsprocessen og markerer filen som konflikter. Udvikleren finder og løser derefter konflikten. Konflikter under fusion kan ske på nedenstående beskrivede måder:

  • Undladelse af at starte fusionen

I tilfælde af afventende ændringer i arbejdsmappen for det aktuelle projekt, kan en fusion mislykkes, da de kunne overskrives af forpligtelserne, mens de fusioneres. Men det kan stabiliseres ved hjælp af forskellige git-kommandoer som git checkout / stash / reset / commit.

  • Fejl under fusionen

Hvis der er en fiasko under fusionen, indikerer det, at der er en konflikt mellem den filial, der er ved at blive fusioneret, og den nuværende filial. Selvom Git forsøger at flette filerne uden konflikter, men hvis det ikke er muligt, gør det det op til dig at manuelt løse dem.

Sådan oprettes en filfletningskonflikt?

Lad os tage et eksempel for at vise / løse fletningskonflikt i GIT ved hjælp af kommandolinjen Git-interface.

$ 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

Lad os se linje for linje, hvad der sker i ovenstående kommandouddrag.

  • git-merge-test opretter et nyt bibliotek og initialiserer et nyt Git-arkiv.
  • Opret derefter en tekstfil med navnet new_merged.txt med noget skrevet på den.
  • Føj den nydannede tekst til repoen, og begiv den derefter.

Vi har nu et nyt depot med en mastergren og en fil new_merged.txt med noget indhold i det. Derefter skaber vi en anden gren, der vil komme i konflikt med fusionen.

$ 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 at nedbryde det til dig, ovenstående linjer:

  • opretter og tjekker en newbranch, der hedder newbranch.
  • overskriver indholdet af filen new_merged.txt.
  • og forpligter til sidst det nyoprettede indhold.

Med den nye filial, der er navngivet en gren, oprettes en engagement, der overskriver indholdet 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(+)

Ovenstående rækkefølge af kommandoer tjekker ikke kun mastergrenen, tilføjer indhold til new_merged.txt men overfører det også til sidst. Nu har vores eksempel 2 nye forpligtelser. Den ene er i mastergrenen, og der er en mere i newbranch. Git nu sammen newbranch for at se, hvad der sker!

$ 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 os, at der er opstået konflikt.

Løsning af fletningskonflikter i GIT

Redigering af den konflikterede fil er en af ​​måderne til at fjerne en fletningskonflikt på. Bare åbn den konfliktede fil i redaktøren og fjern konfliktdelere en efter en. Når den er redigeret, kan du bruge git add for at tilføje det ændrede indhold. Et nyt engagement kan oprettes ved at udføre:

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

Git sikrer løsning af konflikten og skaber således en ny engageret fusion til at afslutte den. Nogle af Git-kommandoerne, der hjælper med at løse flettekonflikter, er:

git log --merge

Fletningen –abort, der er bestået med git-log-kommandoen, producerer en liste over forpligtelser, der er i konflikt mellem de fusionerende grene.

git status

Det hjælper med at identificere konflikter med filer.

git diff

Det hjælper med at finde forskelle mellem staterne i et arkiv eller en fil. Det bruges til at forudsige og forhindre flettekonflikter. Nogle værktøjer som dem, der er beskrevet nedenfor, bruges, når du starter en fusion mislykkes.

git reset --mixed

Det bruges til at fortryde de ændringer, der er foretaget i det aktuelle bibliotek.

git checkout

Det bruges til at fortryde ændringerne til filer eller oftere til at skifte grene. Nogle værktøjer som dem, der er beskrevet nedenfor, bruges, når der opstår konflikter under en fusion.

git reset

Det bruges til at nulstille konfliktfiler under en fusionskonflikt.

git merge --abort

Ved at passere –kort argument med git merge kan man afslutte fletningsprocessen og returnere grenen til sin oprindelige tilstand.

Fordele ved at løse Git Merge-konflikter

  • Det bruges til at oprette, ændre, slette grene, filer eller opbevaringssteder uden konflikter.
  • Det kan bruges til at flette forskellige versioner af koden.
  • Det hjælper også med at foretage ændringer i og kasse til fjerngrene samtidig med at man undgår konflikter.
  • Det hjælper med at styre og håndtere udgivelser uden konflikter.
  • Holder depotet og processen ren og læsbar.

Konklusion

Git har mange anvendelser og bruges i vid udstrækning af udviklere, produktledere og dataforskere. Git-kommandoer er meget effektive og kan være meget nyttige. En konflikt i git opstår, når to forskellige grene forsøger at redigere den samme linje i en fil, eller en fil slettes i en bestemt gren, men redigeres i en anden. Git håndterer de fleste af fusionerne med succes med dens fusionerende funktioner, men det kan også løses manuelt ved hjælp af værktøjer som git-status, git-nulstilling, git-checkout og Git-log.

Anbefalede artikler

Dette er en guide til Løs fletningskonflikt i GIT. Her diskuterer vi, hvordan man effektivt løser Git Merge-konflikter med forskellige kommandoer sammen med dets fordele. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Git alternativer med fordele
  2. Introduktion til Git-værktøjer
  3. GitHub vs SVN - Topforskelle
  4. Top 11 GIT-interviewspørgsmål
  5. Git Push
  6. Tableau-versioner
  7. Komplet guide til Git-fjernkommando
  8. Tre faser af Git-livscyklus med arbejdsgangen

Kategori: