Synopsis
git cherry-pick [-n] [-x] [--continue] [--abort] <commit>...
Description
The git cherry-pick command applies the changes introduced by one or more existing commits onto the current branch as new commits. It's the right tool when you need a single fix from another branch without merging the entire branch. Cherry-picks create new commits with new SHAs but preserve the original author and message.
Cherry-picking can produce conflicts just like a merge. Use --continue after resolving, or --abort to bail. The -x flag adds a "(cherry picked from commit ...)" line to the message — useful for traceability when porting fixes between maintenance branches.
Dans l'usage quotidien, git cherry-pick s'intègre étroitement avec les alias de shell, les plugins d'éditeur et l'intégration continue. Les utilisateurs avancés ajoutent souvent des alias combinant les flags qu'ils passent toujours, ou enveloppent la commande dans des scripts qui appliquent les conventions d'équipe. Le formatage de la sortie peut être personnalisé via la configuration Git — pretty formats, schémas de couleurs et comportement du pager sont tous ajustables. Quand quelque chose tourne mal, la première étape de diagnostic est généralement de relancer la commande avec GIT_TRACE=1 dans l'environnement, ce qui révèle les appels de plomberie sous-jacents. Pour les situations inhabituelles, la sortie --help (git cherry-pick --help) ouvre la page de manuel complète avec les détails de chaque option, y compris celles rarement utilisées dans les workflows ordinaires mais essentielles pour le débogage ou le scripting à grande échelle.
Comprendre comment git cherry-pick interagit avec le reste du modèle de données de Git — la base d'objets, l'index, les refs et l'arborescence de travail — est rentable. Chaque commande opère sur un sous-ensemble de ces pièces, et savoir laquelle elle touche aide à prédire les résultats et récupérer après les erreurs. Lire la documentation officielle de Git en parallèle de la pratique sur un dépôt jetable est la façon la plus rapide d'intérioriser les subtilités. La plupart des problèmes de production avec Git proviennent de l'une de trois causes : comportement par défaut surprenant, opérations réseau partielles, ou réécriture d'historique déjà partagé. Un modèle mental fonctionnel des effets de bord de git cherry-pick aide à éviter les trois.
Options courantes
| Option | Description |
|---|---|
-n, --no-commit | Apply changes but don't commit yet. |
-x | Annotate the commit message with the source SHA. |
-e, --edit | Edit the commit message before committing. |
--continue | Reprendre après résolution des conflits. |
--abort | Cancel and restore prior state. |
--skip | Skip current commit and continue. |
-m <parent> | Specify mainline when picking a merge commit. |
-S | GPG-sign the resulting commits. |
Exemples
git cherry-pick abc123
# Apply a single commit onto current branch
git cherry-pick -x abc123 def456
# Apply two commits with traceability annotations
git cherry-pick A..B
# Pick a range (exclusive of A, inclusive of B)
git cherry-pick --continue
# Continue after fixing conflicts
Erreurs fréquentes
Cherry-picking the same change repeatedly can confuse later merges, since identical-looking commits have different SHAs. Use git rerere to remember resolutions. Picking a merge without -m fails. For long sequences, prefer rebase or merge.
Commandes liées
git rebase, git revert, git merge, git rerere