Git Cherry-pick
Última atualização
git cherry-pick copia as alterações de um ou mais commits específicos e as aplica na sua branch atual como novos commits. É assim que você pega uma única correção de outra branch sem mesclar toda aquela branch - útil para fazer backport de um hotfix ou tirar um commit de uma branch de feature.
Experimente estes comandos no terminal playground - um shell real no seu navegador, sem nada para instalar.
Sintaxe
| Command | What it does |
|---|---|
git cherry-pick <hash> | Aplica um commit na branch atual |
git cherry-pick <a> <b> | Aplica vários commits em ordem |
git cherry-pick <a>..<b> | Aplica um intervalo de commits (excluindo a) |
git cherry-pick -n <hash> | Aplica as alterações mas ainda não faz commit |
git cherry-pick -x <hash> | Registra o commit original na mensagem |
Durante um cherry-pick
Se um cherry-pick gerar um conflito, resolva-o e continue.
| Command | What it does |
|---|---|
git cherry-pick --continue | Retoma após resolver os conflitos |
git cherry-pick --abort | Cancela e restaura a branch |
git cherry-pick --skip | Pula o commit atual |
Exemplo prático
| Passo | Comando | Resultado |
|---|---|---|
| 1 | git log --oneline hotfix | Encontra o hash da correção, por exemplo a1b2c3d |
| 2 | git switch main | Vai para a branch que deve receber a correção |
| 3 | git cherry-pick a1b2c3d | Aplica a correção na main como um commit novo, com um hash novo |
Perguntas frequentes sobre git cherry-pick
O que o git cherry-pick faz?
Ele pega as alterações introduzidas por um commit específico e as aplica na sua branch atual como um commit totalmente novo (com um novo hash). Diferente do merge ou do rebase, ele não traz uma branch inteira - apenas o commit ou os commits que você indicar.
Quando devo usar o cherry-pick?
main para uma branch de release, ou extrair um único commit útil de uma branch de feature sem mesclar tudo. Se você quer a branch inteira, use merge ou rebase.Como faço cherry-pick de vários commits?
git cherry-pick <a> <b> <c> aplica cada um em ordem. Para um intervalo contíguo use git cherry-pick <start>..<end>, que aplica todos os commits depois de start até end inclusive. Adicione <start>^..<end> se quiser incluir o próprio start.E se um cherry-pick causar um conflito?
git add dos resultados e então execute git cherry-pick --continue. Para desfazer completamente, use git cherry-pick --abort, que restaura sua branch ao estado anterior ao início do cherry-pick.Como faço cherry-pick de um commit de outra branch?
git log --oneline <other-branch>, mude para a branch que deve recebê-lo e rode git cherry-pick <hash>. Você também pode passar o nome de uma branch, como em git cherry-pick feature, que pega o commit da ponta dessa branch.Qual é a diferença entre cherry-pick e merge?
Posso praticar isso online?
git cherry-pick em um shell real no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre como mover commits entre branches passo a passo.