Den ultimata guiden till Git Merge och Git Rebase

Välkommen till vår ultimata guide tillgit merge ochgit rebase kommandon. Denna handledning kommer att lära dig allt du behöver veta om att kombinera flera grenar med Git.

Git Merge

kommandotgit merge kommer att sammanfoga alla ändringar som gjordes till kodbasen på en separat gren till din nuvarande gren som en ny commit.,

kommandosyntaxen är som följer:

git merge BRANCH-NAME

om du till exempel arbetar i en gren med namnetdev och vill slå samman nya ändringar som gjorts i en gren med namnetnew-features, skulle du utfärda följande kommando:

git merge new-features

Obs! Om det finns några ändringar som inte har gjorts i din nuvarande gren kommer git inte att tillåta dig att slå samman förrän alla ändringar i din nuvarande gren har gjorts., För att hantera dessa ändringar kan du antingen:

skapa en ny gren och begå ändringarna

git checkout -b new-branch-namegit add .git commit -m "<your commit message>"

Stash dem

git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree

överge alla ändringar

git reset --hard # removes all pending changes

Git Rebase

Rebasera en gren i Git är ett sätt att flytta hela en gren till en annan punkt i trädet. Det enklaste exemplet flyttar en gren längre upp i trädet., Säg att vi har en gren som avviker från huvudgrenen vid punkt A:

 /o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master

När du rebase kan du flytta den så här:

 /o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master

för att rebase, se till att du har alla de åtaganden du vill ha i rebase i din huvudgren. Kolla in den gren du vill rebase och skriv git rebase master (där master är den gren du vill rebase på)., att till exempel en gren som baserades på en annan gren (låt oss kalla den funktion) rebaseras på master:

 /---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master

Efter git rebase master branch eller git rebase master när du har checkat ut grenen får du:

 /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch

Git rebase interactive i konsolen

för att använda git rebase I konsolen med en lista över åtaganden som du kan välja, Redigera eller släppa i rebase:

  • ange git rebase -i HEAD~5 med det sista numret som ett antal åtaganden från den senaste bakåt du vill granska.,
  • i vim trycker du påesc ochi för att börja redigera testet.
  • på vänster sida kan du skriva överpick med ett av kommandona nedan. Om du vill squash en begå i en tidigare och kasta begå meddelandet, ANGEf I stället förpick I begå.
  • spara och avsluta textredigeraren.
  • när rebase stoppas, gör nödvändiga justeringar och använd sedan git rebase --continue tills rebase lyckas.,
  • om det rebases framgångsrikt måste du tvinga driva dina ändringar medgit push -f för att lägga till den rebaserade versionen till ditt fjärrförråd.
  • om det finns en sammanfogningskonflikt finns det ett antal sätt att åtgärda detta, inklusive att följa förslagen i den här guiden. Ett sätt är att öppna filerna i en textredigerare och ta bort de delar av koden du inte vill ha. Använd sedan git add <file name> följt av git rebase --continue., Du kan hoppa över den konflikt begå genom att ange git rebase --skip, sluta rebasera genom att köra git rebase --abort I konsolen.

sammanfoga konflikter

en sammanfogningskonflikt är när du gör åtaganden på separata grenar som ändrar samma rad på motstridiga sätt.,vilken version av filen som ska behållas i ett felmeddelande som liknar följande:

CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.

om du tittar på filen resumé.txt I din kodredigerare kan du se var konflikten ägde rum:

<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address

Git lade till några ytterligare rader i filen:

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

git merge vs git rebase

både git merge och git rebase är mycket användbara kommandon, och en är inte bättre än den andra., Det finns dock några mycket viktiga skillnader mellan de två kommandon som du och ditt lag bör ta hänsyn till.

Närgit merge körs skapas en extra sammanfogning. När du arbetar i din lokala förvaret, med alltför många sammanfogning begår kan göra begå historia ser förvirrande. Ett sätt att undvika sammanslagningen är att använda git rebase istället.

git rebase är en mycket kraftfull funktion. Med detta sagt är det också riskabelt om det inte används på rätt sätt., git rebase ändrar begå historia, så använd den med försiktighet. Om rebasering görs i fjärrförvaret kan det skapa många problem när andra utvecklare försöker dra de senaste kodändringarna från fjärrförvaret. Kom ihåg att endast köra git rebase I ett lokalt arkiv.

det är allt du behöver veta för att slå samman och rebase med det bästa av dem.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *