Close

Cherry-pick do Git

O git cherry-pick é um poderoso comando que permite que commits de Git arbitrários sejam coletados como referência e anexados ao HEAD de trabalho atual. "Cherry picking" é o ato de selecionar um commit da ramificação e fazer a aplicação a outra. O git cherry-pick pode ser útil para desfazer alterações. Por exemplo, digamos que o commit seja feito sem querer na ramificação errada. É possível alterar para a ramificação correta e fazer o cherry-pick do commit para onde ele deveria pertencer.


Quando usar o git cherry pick


O git cherry-pick é uma ferramenta útil, mas nem sempre a melhor prática. O cherry picking pode causar commits duplicados, e, em muitos cenários onde o cherry picking funcionaria, o uso das tradicionais mesclagens é preferido. Mesmo assim, o git cherry-pick é uma ferramenta útil para alguns cenários...

Colaboração em equipe


Muitas vezes, uma equipe tem membros individuais trabalhando no mesmo código ou em torno dele. Talvez uma nova função do produto tenha um componente de back-end e front-end. Pode haver algum código compartilhado entre dois setores do produto. Talvez o desenvolvedor de back-end crie uma estrutura de dados que o front-end também vai precisar utilizar. O desenvolvedor de front-end pode usar o git cherry-pick para colocar o commit no qual essa estrutura de dados hipotéticos foi criada. Assim o desenvolvedor front-end poderia continuar o progresso no lado do projeto.

bancos de dados
Material relacionado

Como mover um Repositório do Git completo

Logotipo do Bitbucket
VER SOLUÇÃO

Aprenda a usar o Git com o Bitbucket Cloud

Hotfixes de bugs


Quando um bug é descoberto, é importante disponibilizar uma resolução aos usuários finais o mais rápido possível. Por exemplo, imagine que um desenvolvedor começou a trabalhar em uma nova função. Durante o desenvolvimento da nova função, ele identificou um bug preexistente. O desenvolvedor cria um commit explícito e corrige o bug. Esse novo commit de correção pode, por meio do cherry picking, ser passado direto para a ramificação principal para solucionar o bug antes que ele afete mais usuários.

Desfazer alterações e restaurar commits perdidos


Às vezes, a ramificação de feature pode ficar obsoleta e não passar por merge com a main. Às vezes, a pull request pode ser fechada sem passar por merge. O Git nunca perde esses commits. Usando comandos como git log e git reflog, os commits podem ser encontrados e voltarem à ativa com o cherry pick.

Como usar o git cherry pick


Para demonstrar como usar git cherry-pick, vamos supor que a gente tenha um repositório com o seguinte estado de ramificação:

    a - b - c - d   Main
         \
           e - f - g Feature

O uso do git cherry-pick é bem simples e pode ser executado como:

git cherry-pick commitSha

Neste exemplo, commitSha é uma referência de commit. Você pode encontrar uma referência de commit com o git log. Neste exemplo, imagine que a gente use o commit "f" na ramificação principal. Em primeiro lugar, é preciso ter certeza de que a gente está trabalhando na ramificação principal.

git checkout main

Então, executamos o cherry-pick com o seguinte comando:

git cherry-pick f

Após a execução, o histórico do Git vai se parecer com:

    a - b - c - d - f   Main
         \
           e - f - g Feature

O commit f foi colocado na ramificação principal com sucesso

Exemplos de cherry-pick do git


O git cherry pick pode também receber algumas opções de execução.

-edit

Passar a opção -edit vai fazer com que o git solicite a mensagem de commit antes de aplicar a operação de cherry-pick

--no-commit

A opção --no-commit vai executar o cherry-pick, mas, em vez de fazer o novo commit, ela vai mover o conteúdo do commit alvo para dentro do diretório de trabalho da ramificação atual.

--signoff

A opção --signoff vai adicionar uma linha de assinatura “signoff” ao final da mensagem de commit cherry-pick

Além dessas opções úteis, o git cherry-pick também aceita uma variedade de opções de estratégia de mesclagem. Saiba mais sobre essas opções na documentação estratégias de mesclagem do Git.

O cherry-pick do git também aceita a entrada opcional de resolução de conflito de mesclagem, que inclui as opções: --abort --continue e --quit estas opções são abordadas com maior profundidade em relação ao git merge e ao git rebase.

Resumo


O cherry-pick é um comando poderoso e conveniente que é muito útil em alguns cenários. Ele não deve ser utilizado no lugar do git merge ou do git rebase. O comando git log é necessário para ajudar a encontrar commits para fazer o cherry-pick.


Compartilhar este artigo
Próximo tópico

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Pessoas colaborando usando uma parede cheia de ferramentas

Blog do Bitbucket

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Demonstrações de funções no Demo Den com parceiros da Atlassian

Como o Bitbucket Cloud funciona com o Atlassian Open DevOps

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up