Git Cherry Pick

git cherry-pick is een krachtig commando dat het mogelijk maakt om willekeurige Git commits te pakken door verwijzing en toe te voegen aan de huidige werkende HEAD. Cherry picking is het kiezen van een commit van een branch en deze op een andere branch toepassen. git cherry-pick kan handig zijn voor het ongedaan maken van wijzigingen. Bijvoorbeeld, stel dat een commit per ongeluk op de verkeerde branch gedaan is. Je kunt naar de juiste branch wisselen en de commit cherry-picken naar waar het hoort.

Wanneer git cherry pick gebruiken

git cherry-pick is een handig gereedschap, maar niet altijd een best practice. Cherry picking kan dubbele commits veroorzaken en veel scenario’s waar cherry picking zou werken, hebben traditionele merges de voorkeur. Dit gezegd hebbende, is git cherry-pick een handige tool voor een paar scenario’s…

Team samenwerking.

Vaak zal een team individuele leden vinden die in of rond dezelfde code werken. Misschien heeft een nieuwe productfunctie een backend en frontend component. Er kan wat gedeelde code zijn tussen de twee productsectoren. Misschien maakt de backend ontwikkelaar een datastructuur die de frontend ook zal moeten gebruiken. De frontend ontwikkelaar zou git cherry-pick kunnen gebruiken om de commit te kiezen waarin deze hypothetische datastructuur gemaakt is. Deze keuze zou de frontend ontwikkelaar in staat stellen om door te gaan met zijn deel van het project.

Bug hotfixes

Wanneer een bug wordt ontdekt, is het belangrijk om zo snel mogelijk een fix aan de eindgebruikers te leveren. Een voorbeeldscenario: een ontwikkelaar is begonnen aan een nieuwe functie. Tijdens de ontwikkeling van die nieuwe functie identificeren ze een reeds bestaande bug. De ontwikkelaar creëert een expliciete commit om deze bug te patchen. Deze nieuwe patch commit kan direct in de master branch ge-cherry-picked worden om de bug te repareren voordat het meer gebruikers raakt.

Wijzigingen ongedaan maken en verloren commits herstellen

Soms kan een feature branch oud worden en niet samengevoegd worden in master. Soms kan een pull request gesloten worden zonder samengevoegd te worden. Git verliest die commits nooit, en met commando’s als git log en git reflog kunnen ze gevonden worden en weer tot leven gewekt worden.

Hoe gebruik je git cherry pick

Om te demonstreren hoe je git cherry-pick gebruikt, laten we aannemen dat we een repository hebben met de volgende branch status:

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

git cherry-pick gebruik is recht-toe-recht-aan en kan uitgevoerd worden als:

git cherry-pick commitSha

In dit voorbeeld commitSha is een commit referentie. Je kunt een commit referentie vinden door git log te gebruiken. In dit voorbeeld hebben we laten we zeggen dat we commit `f` in master willen gebruiken. Eerst zorgen we ervoor dat we op de master branch werken.

git checkout master

Dan voeren we de cherry-pick uit met het volgende commando:

git cherry-pick f

Eenmaal uitgevoerd zal onze Git geschiedenis er als volgt uitzien:

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

De f commit is succesvol gepicked in de master branch

Voorbeelden van git cherry pick

git cherry pick kunnen ook aan enkele uitvoeringsopties doorgegeven worden.

-edit

Het doorgeven van de -edit optie zal git om een commit bericht laten vragen voordat de cherry-pick operatie wordt uitgevoerd

--no-commit

De --no-commit optie zal de cherry pick uitvoeren, maar in plaats van een nieuwe commit te maken, zal het de inhoud van de doel commit naar de werkdirectory van de huidige branch verplaatsen.

--signoff

De --signoff optie voegt een ‘signoff’ signeer regel toe aan het eind van de cherry-pick commit boodschap

Naast deze handige opties accepteert git cherry-pick ook een variëteit aan samenvoeg strategie opties. Leer meer over deze opties in de git samenvoeg strategieën documentatie.

Daarnaast accepteert git cherry-pick ook optie invoer voor het oplossen van samenvoeg conflicten, dit omvat opties: --abort --continue en --quit deze opties worden meer in de diepte behandeld met betrekking tot git merge en git rebase.

Samenvatting

Cherry picking is een krachtig en handig commando dat in een paar scenario’s ongelooflijk nuttig is. Cherry picking moet niet misbruikt worden in plaats van git merge of git rebase. Het git log commando is nodig om te helpen commits te vinden om te cherry picken.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.