Welkom bij onze ultieme gids voor de git merge
en git rebase
commando ‘ s. Deze tutorial zal je alles leren wat je moet weten over het combineren van meerdere branches met Git.
Git Merge
het git merge
commando zal alle wijzigingen die gemaakt zijn in de code base op een aparte branch mergen naar je huidige branch als een nieuwe commit.,
de syntaxis van De opdracht is als volgt:
git merge BRANCH-NAME
bijvoorbeeld, als u werkt momenteel in een gemeente met de naam dev
en wilt samenvoegen, een nieuwe wijzigingen die zijn aangebracht in een tak met de naam new-features
, zou je het volgende commando:
git merge new-features
Opmerking: Als er geen niet-doorgevoerde wijzigingen op uw huidige branch, Git zal niet toestaan dat u om te fuseren tot dat alle wijzigingen in uw huidige branche zijn vastgelegd., Om deze wijzigingen af te handelen, kun je ofwel:
een nieuwe branch aanmaken en de wijzigingen committen
git checkout -b new-branch-namegit add .git commit -m "<your commit message>"
ze Stas
git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree
alle wijzigingen opgeven
git reset --hard # removes all pending changes
Git Rebase
een branch rebasen in Git is een manier om het geheel van een branch naar een ander punt in de tree te verplaatsen. Het eenvoudigste voorbeeld is het verplaatsen van een tak verder in de boom., Stel dat we een branch hebben die afwijkt van de master branch op punt A:
/o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master
wanneer je rebase je kunt verplaatsen als volgt:
/o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master
om te rebasen, zorg ervoor dat je alle commits hebt die je wilt in de rebase in je master branch. Bekijk de branch die u wilt rebasen en typ git rebase master
(waar master de branch is waarop u wilt rebasen)., dat bijvoorbeeld een tak die was gebaseerd op een andere tak (noem het kenmerk) is opnieuw ingesteld op master:
/---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master
Na git rebase master branch
of git rebase master
wanneer u hebt gecontroleerd of de branche, krijgt u:
/---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch
Git rebase interactief in de console
Om git rebase
in de console met een lijst met commits die je kunt kiezen, bewerken of daling in de rebase:
- Voer
git rebase -i HEAD~5
met het laatste nummer wordt een aantal commits van de meest recente naar achteren u wilt bekijken., - in vim, druk op
esc
, dani
om de test te bewerken. - aan de linkerkant kunt u de
pick
overschrijven met een van de onderstaande commando ‘ s. Als je een commit naar een vorige wilt squashen en het commit bericht wilt weggooien, voer danf
in in plaats van depick
van de commit. - Sla uw teksteditor op en sluit deze af.
- wanneer rebase wordt gestopt, maak dan de nodige aanpassingen, gebruik dan
git rebase --continue
totdat rebase succesvol is., - als het rebased succesvol is, moet je de wijzigingen forceren met
git push -f
om de rebased versie toe te voegen aan je remote repository. - als er een merge conflict is, zijn er een aantal manieren om dit op te lossen, inclusief het volgen van de suggesties in deze gids. Een manier is om de bestanden te openen in een teksteditor en de delen van de code die u niet wilt verwijderen. Gebruik dan
git add <file name>
gevolgd doorgit rebase --continue
., U kunt de conflicterende commit overslaan doorgit rebase --skip
in te voeren, stop met rebasen doorgit rebase --abort
in uw console uit te voeren.
Merge conflicten
een merge conflict is wanneer je commits maakt op afzonderlijke branches die dezelfde regel op conflicterende manieren veranderen.,welke versie van het bestand te bewaren in een foutbericht vergelijkbaar met het volgende:
CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.
Als je de resumé.txt
bestand in de code-editor, kan je zien waar het conflict plaats:
<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address
Git-toegevoegd een aantal extra regels toe aan het bestand:
<<<<<<< HEAD
=======
>>>>>>> updated_address
Git Merge vs Git Rebase
Zowel git merge
en git rebase
zeer nuttige commando ‘ s, en één is niet beter dan de andere., Echter, er zijn een aantal zeer belangrijke verschillen tussen de twee commando ‘ s die u en uw team in aanmerking moeten nemen.
wanneer git merge
wordt uitgevoerd, wordt een extra merge commit aangemaakt. Wanneer je in je lokale repository werkt, kan het hebben van te veel merge commits de commit historie verwarrend maken. Een manier om de merge commit te vermijden is door in plaats daarvan git rebase
te gebruiken.
git rebase
is een zeer krachtige functie. Dat gezegd hebbende, het is ook riskant als het niet op de juiste manier wordt gebruikt., git rebase
verandert de commit historie, dus gebruik het voorzichtig. Als rebasen wordt gedaan in de remote repository, dan kan het veel problemen veroorzaken wanneer andere ontwikkelaars proberen om de laatste code wijzigingen uit de remote repository te halen. Vergeet niet alleen git rebase
in een lokale repository uit te voeren.
dat is alles wat je moet weten om te mergen en te rebasen met de beste van hen.