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?
Use quando precisar de um commit específico em outro lugar - por exemplo, fazer backport de uma correção de bug da
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?
Liste-os:
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?
O Git pausa e marca os arquivos em conflito. Resolva-os, faça
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?
Encontre o hash do commit com
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?
O git merge traz todos os commits de uma branch e registra onde os históricos se juntaram. O cherry-pick copia só os commits que você indicar, como commits novos, sem nenhum vínculo com os originais. Faça merge da branch quando quiser tudo; use cherry-pick quando quiser um ou dois commits.
Posso praticar isso online?
Sim. Abra o terminal playground para executar
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.