Introduktion till Lös merge-konflikt i GIT

Att hantera bidrag för att lösa konflikter mellan flera distribuerade utvecklare är ett av huvudjobben för versionskontrollsystemen. För att lösa sammanslagningskonflikter måste vi först förstå vad det är exakt. Det uppstår under sammanslagning av olika versioner av samma kod och hanteras av versionskontrollsystemet, oftast när en utvecklare tar bort en fil medan en annan utvecklare fortfarande modifierade den, eller när flera personer försöker ändra samma rad i en fil. I den här artikeln får vi veta mer om Git-sammanslagningskonflikter, vad som orsakar det och hur det kan lösas.

Vad är sammanslagningskonflikt i GIT?

Git har gjort sammanslagningen mycket enkel eftersom den automatiskt integrerar nya ändringar med kommandot git-merge. Men vid konflikter är det bara den utvecklare som slås samman och är medveten om konflikten, medan de andra är omedvetna. Så vad Git gör är att det stoppar sammanslagningsprocessen och flaggar filen som konflikter. Utvecklaren hittar och löser konflikten. Konflikter under sammanslagning kan ske på nedan beskrivna sätt:

  • Underlåtenhet att starta sammanslagningen

I händelse av väntande ändringar i arbetskatalogen för det aktuella projektet kan en sammanslagning misslyckas eftersom de kan skrivas över av åtagandena medan de slås samman. Men det kan stabiliseras med olika git-kommandon som git checkout / stash / reset / commit.

  • Misslyckande under sammanslagning

Om det finns ett misslyckande under sammanslagning indikerar det att det finns en konflikt mellan den gren som slås samman och den nuvarande grenen. Även om Git försöker slå samman filerna utan konflikter men om det inte går att göra så kommer det att vara upp till dig att manuellt lösa dem.

Hur skapar jag en sammanslagning av konflikt?

Låt oss ta ett exempel för att visa / lösa sammanslagningskonflikt i GIT med kommandoraden Git-gränssnittet.

$ 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

Låt oss se rad för rad vad som händer i kommandot.

  • git-merge-test skapar en ny katalog och initialiserar ett nytt Git-arkiv.
  • Skapa sedan en textfil med namnet new_merged.txt med något skrivet på den.
  • Lägg till den nytillverkade texten i repo och begå den sedan.

Vi har nu ett nytt arkiv med en huvudgren och en fil new_merged.txt med lite innehåll i den. Sedan skapar vi en annan gren som kommer i konflikt med sammanslagningen.

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

För att dela upp det till dig, ovanstående rader:

  • skapar och checkar ut en nybransch med namnet newbranch.
  • skriver över innehållet i filen new_merged.txt.
  • och begår slutligen det nyskapade innehållet.

Med nybranschen som heter en gren skapas en åtagande som skriver över innehållet 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(+)

Ovanstående sekvens med kommandon kontrollerar inte bara huvudgrenen, lägger till innehåll till new_merged.txt utan begår det också i slutändan. Nu har vårt exempel två nya åtaganden. En är i mastergrenen och det finns en till i nybranschen. Git nu samman newbranch för att se vad som händer!

$ 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 visar oss att konflikten har dykt upp.

Lösa sammanfogningskonflikter i GIT

Att redigera den motstridiga filen är ett av sätten att ta bort en sammanslagningskonflikt. Öppna bara den motstridiga filen i redaktören och ta bort konfliktdelarna en efter en. När du har redigerat kan du använda git add för att lägga till det modifierade innehållet. Ett nytt engagemang kan skapas genom att köra:

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

Git säkerställer lösning av konflikten och skapar därmed en ny engagerad sammanslagning för att slutföra den. Några av Git-kommandona som hjälper till att lösa sammanslagningskonflikter är:

git log --merge

Sammanfogningen - kortet som passeras med GIT-loggkommandot ger en lista över åtaganden som står i konflikt mellan sammanslagna grenar.

git status

Det hjälper till att identifiera konfliktfiler.

git diff

Det hjälper till att hitta skillnader mellan tillstånd i ett förvar eller en fil. Det används för att förutsäga och förhindra sammanslagningskonflikter. Vissa verktyg som de som anges nedan används när du startar en sammanslagning misslyckas.

git reset --mixed

Det används för att ångra ändringarna i den aktuella katalogen.

git checkout

Det används för att ångra ändringarna i filer, eller oftare för att byta grenar. Vissa verktyg som de som anges nedan används när konflikter uppstår under en sammanslagning.

git reset

Det används för att återställa motstridiga filer under en sammanslagningskonflikt.

git merge --abort

Att passera –abort-argument med git-merge gör att man kan lämna sammanslagningsprocessen och återställa grenen till sitt ursprungliga tillstånd.

Fördelar med att lösa Git Merge-konflikter

  • Det används för att skapa, modifiera, ta bort grenar, filer eller arkiv utan konflikter.
  • Det kan användas för att slå samman olika versioner av koden.
  • Det hjälper också till att göra ändringar och kassera fjärrgrenar och samtidigt undvika konflikter.
  • Det hjälper till att hantera och hantera utsläpp utan konflikter.
  • Håller förvaret & processen ren och läsbar.

Slutsats

Git har många användningsområden och används i stor utsträckning av utvecklare, produktchefer och datavetare. Git-kommandon är mycket effektiva och kan vara mycket användbara. En konflikt i git uppstår när två olika grenar försöker redigera samma rad i en fil, eller en fil raderas i en viss gren men redigeras i en annan. Git hanterar de flesta av sammanslagningarna framgångsrikt med sina sammanslagningsfunktioner men det kan också lösas manuellt med hjälp av verktyg som git-status, git-återställning, git-utcheckning och Git-logg.

Rekommenderade artiklar

Detta är en guide för att lösa sammanflätningskonflikt i GIT. Här diskuterar vi hur man effektivt löser Git Merge Konflikter med olika kommandon tillsammans med dess fördelar. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Git alternativ med fördelar
  2. Introduktion till Git-verktyg
  3. GitHub vs SVN - Toppskillnader
  4. Topp 11 GIT-intervjufrågor
  5. Git Push
  6. Tableau-versioner
  7. Komplett guide till Git-fjärrkommando
  8. Tre steg av Git-livscykel med arbetsflödet

Kategori: