Menu
CoddyTech

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.

git cherry-pick copia um commit escolhido de outro branch e o aplica ao seu branch atual.

Sintaxe

CommandWhat 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.

CommandWhat it does
git cherry-pick --continueRetoma após resolver os conflitos
git cherry-pick --abortCancela e restaura a branch
git cherry-pick --skipPula o commit atual

Exemplo prático

PassoComandoResultado
1git log --oneline hotfixEncontra o hash da correção, por exemplo a1b2c3d
2git switch mainVai para a branch que deve receber a correção
3git cherry-pick a1b2c3dAplica 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.
Ilustração das linguagens de programação do Coddy

Aprenda Git com a Coddy

COMEÇAR