Close

Git Cherry Pick

git cherry-pick is een krachtige opdracht waarmee willekeurige Git-commits kunnen worden geselecteerd door verwijzing en kunnen worden toegevoegd aan de actieve HEAD. Bij 'cherry picking' wordt een commit uit een branch gekozen en op een andere toegepast. git cherry-pick kan handig zijn om wijzigingen ongedaan te maken. Stel bijvoorbeeld dat er per ongeluk een commit wordt gemaakt naar de verkeerde branch. Je kunt dan naar de juiste branch gaan en de commit 'cherry-picken' waar deze wél hoort.


Wanneer Git cherry pick gebruiken


git cherry-pick is een handig hulpmiddel maar niet altijd een beproefde methode. 'Cherry picking' kan leiden tot dubbele commits en in veel scenario's waarin 'cherry picking' zou werken, hebben traditionele samenvoegingen de voorkeur. Dat gezegd hebbende is git cherry-pick een handig hulpmiddel voor een paar scenario's ...

Teamsamenwerking


Vaak zal een team merken dat individuele leden in of rond dezelfde code werken. Misschien heeft een nieuwe productfunctie een backend- en frontend-component. Er kan sprake zijn van code die door twee productsectoren wordt gedeeld. Misschien maakt de back-endontwikkelaar een gegevensstructuur die de frontend ook moet gebruiken. De frontend-ontwikkelaar kan dan git cherry-pick gebruiken om de commit te kiezen waarin deze hypothetische gegevensstructuur is aangemaakt. Met deze keuze kan de frontend-ontwikkelaar aan zijn kant doorwerken aan het project.

Databases
gerelateerd materiaal

Een volledige Git-repository verplaatsen

Logo Bitbucket
Oplossing bekijken

Git leren met Bitbucket Cloud

Hotfixes voor fouten


Wanneer er een bug wordt ontdekt, is het belangrijk om eindgebruikers zo snel mogelijk een oplossing te bieden. Stel dat een ontwikkelaar aan een nieuwe functie is begonnen. Tijdens de ontwikkeling van die nieuwe functie constateert hij of zij een bestaande bug. De ontwikkelaar maakt een expliciete commit aan met een patch voor deze bug. Deze nieuwe patch-commit kan rechtstreeks op de main-branch worden toegepast, zodat de bug wordt opgelost voordat hij meer gebruikers beïnvloedt.

Wijzigingen ongedaan maken en verloren commits herstellen


Soms kan een feature- of functie-branch oud worden en niet worden samengevoegd met de main. Soms kan een pull request gesloten worden zonder dat er een merge wordt uitgevoerd. Git verliest die commits nooit. Via opdrachten zoals git log en git reflog kunnen ze worden gevonden en met behulp van 'cherry picking' weer tot leven worden geroepen.

Hoe Git cherry pick gebruiken


We willen laten zien hoe git cherry-pick kan worden gebruikt. Stel dat we een repository hebben met de volgende branch-status:

    a - b - c - d   Main
         \
           e - f - g Feature

git cherry-pick kan eenvoudig worden gebruikt en als volgt worden uitgevoerd:

git cherry-pick commitSha

In dit voorbeeld is commitSha een commitreferentie. Je kunt een commitreferentie vinden door git log te gebruiken. In dit voorbeeld willen we commit `f` gebruiken in main. Eerst zorgen we ervoor dat we aan de main-branch werken.

git checkout main

Vervolgens voeren we de cherry-pick uit met de volgende opdracht:

git cherry-pick f

Eenmaal uitgevoerd zal onze Git-geschiedenis er als volgt uitzien:

    a - b - c - d - f   Main
         \
           e - f - g Feature

De f-commit is gekozen in de main-branch.

Voorbeelden van 'git cherry pick'


git cherry pick kan ook worden doorgegeven aan enkele uitvoeringsopties.

-edit

Het doorgeven van de optie -edit zal ertoe leiden dat git om een commit-bericht vraagt voordat de cherry-pick-bewerking wordt toegepast.

--no-commit

De optie --no-commit zal de cherry pick uitvoeren, maar in plaats van een nieuwe commit te maken, zal de inhoud van de doelcommit worden verplaatst naar de werkmap van de huidige branch.

--signoff

De optie --signoff voegt een 'signoff'-handtekeningregel toe aan het einde van het cherry-pick commit-bericht

Naast deze handige opties accepteert git cherry-pick ook tal van opties voor de samenvoegingsstrategie. Lees meer over deze opties in de documentatie over git merge-strategieën.

Git cherry-pick accepteert daarnaast ook optie-invoer voor het oplossen van samenvoegingsconflicten. Dit omvat de volgende opties: --abort --continue en --quit. Deze opties worden dieper behandeld met betrekking tot git merge en git rebase.

Samenvatting


'Cherry picking' is een krachtige en handige opdracht die ongelooflijk nuttig is in een paar scenario's. 'Cherry picking' mag niet worden misbruikt in plaats van git merge of git rebase. De opdracht git log is vereist om commits te vinden voor cherry pick.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Mensen die samenwerken met een muur vol tools

Bitbucket-blog

Toelichting DevOps

DevOps-leertraject

Demo Den Feature-demo's met Atlassian-experts

Hoe Bitbucket Cloud werkt met Atlassian Open DevOps

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up