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 över
pick
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 med
git 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 avgit rebase --continue
., Du kan hoppa över den konflikt begå genom att angegit rebase --skip
, sluta rebasera genom att köragit 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.