Défi
Énoncé
Appliquer un seul commit identifié par son hash depuis une branche feature sur la branche main, sans fusionner l'ensemble de la branche. En cas de conflit, deux options sont disponibles : annuler l'opération ou résoudre le conflit manuellement puis continuer. Commandes valides avec git 2.x+.
Contraintes
- Se placer sur la branche cible (
main) avant d'exécutergit cherry-pick. - Fournir le hash complet ou abrégé du commit à transporter.
- En cas de conflit : éditer les fichiers conflictuels, les ajouter à l'index avec
git add, puis finaliser avecgit cherry-pick --continue. - Pour annuler proprement :
git cherry-pick --abort(restaure l'état avant la tentative). - Ne pas utiliser
git cherry-pick -nsauf besoin explicite de contrôle de l'index.
Exemple
Situation de départ :
$ git log --oneline feature -3
b7e2a11 feat: ajouter la validation du formulaire
c4d3f09 feat: page de contact brouillon
1a0b8c7 chore: mise à jour des dépendances
Appliquer uniquement le commit b7e2a11 sur main :
$ git checkout main
$ git cherry-pick b7e2a11
[main 9f1d034] feat: ajouter la validation du formulaire
Date: Wed May 20 11:30:00 2026 +0200
2 files changed, 45 insertions(+)
En cas de conflit lors du cherry-pick :
$ git cherry-pick b7e2a11
Auto-merging src/form.js
CONFLICT (content): Merge conflict in src/form.js
error: could not apply b7e2a11... feat: ajouter la validation du formulaire
# Option 1 : annuler
$ git cherry-pick --abort
# Option 2 : résoudre et continuer
$ # (éditer src/form.js pour résoudre le conflit)
$ git add src/form.js
$ git cherry-pick --continue