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.
Material relacionado
Como mover um Repositório do Git completo
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, commit
Sha é 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.