Cherry-picken

Geavanceerd Git

Amanda Crawford-Adamo

Software and Data Engineer

Wat is cherry-pick?

Past de wijzigingen van een specifieke commit toe op een andere branch

Eén commit cherry-picken

git cherry-pick <commit-hash>

Meerdere commits cherry-picken

git cherry-pick <hash1> <hash2> ..

Doel

  • Specifieke bugfixes over branches toepassen
  • Features terugdraaien naar stabiele versies
  • Selectief experimentele changes toepassen
  • Verloren commits herstellen
Geavanceerd Git

Voorbeeld van cherry-pick

Een grafiek van main en feature. Main heeft twee commits. De featurebranch splitst na de laatste commit van main.

Twee afbeeldingen met de log van main en feature vóór het cherry-picken.

Geavanceerd Git

Cherry-pick-proces

  1. Checkout naar de main-branch

    git checkout main
    
  2. Voer cherry-pick uit om wijzigingen van commit def456 uit feature te halen.

    git cherry-pick def456
    

Een grafiek van main en feature. Main heeft drie commits. De featurebranch splitst na de tweede commit met twee extra commits. De derde commit op main is gecherry-picked van de laatste commit op feature.

Geavanceerd Git

Cherry-pick-conflicten oplossen

Stappen bij conflicten oplossen
  1. Bewerk conflicterende bestanden handmatig
  2. Voeg opgeloste bestanden toe aan staging met git add <resolved-files>
  3. Ga verder met cherry-pick met de vlag --continue
git cherry-pick --continue
Een cherry-pick stoppen

Gebruik de vlag --abort om te stoppen

git cherry-pick --abort
Geavanceerd Git

Wanneer cherry-picken

Use cases

  1. Hotfixes toepassen
  2. Geïsoleerde features testen

Let op

  1. Kan dubbele commits maken
  2. Kan geschiedenis compliceren bij overgebruik
  3. Grotere wijzigingen: overweeg mergen of rebasen
Geavanceerd Git

Laten we oefenen!

Geavanceerd Git

Preparing Video For Download...