DEV Community

Cover image for Como usar o cherry-pick no GIT
João Batista Costa Oliveira
João Batista Costa Oliveira

Posted on

4 3

Como usar o cherry-pick no GIT

Olá pessoal, tudo bem?

Recentemente tive a necessidade de publicar no ambiente de produção algumas alterações, já aprovadas, que estavam em uma branch, porém outras alterações de outros desenvolvedores ainda estavam aguardando aprovação. Para ajudar a visualizar o cenário, temos as branches:

  • master
  • homolog
  • branch_joao
  • branch_outro_dev

Cenário atual das branches

Como podem perceber, a aprovação ocorre em cima da branch homolog.

Enfim, outro desenvolvedor e eu criamos Pull Requests para homolog.

Até então, somente a minha alteração foi aprovada e por conta do Pull Request do colega, eu não poderia criar a Pull Request de homolog para master, pois a alteração dele iria para produção.

Pois bem, o git tem o comando cherry-pick, que aplica alterações de acordo com commits já existentes. Ou seja, cherry picking é o ato de escolher um commit de uma branch e aplicá-la em outra.

Os comandos abaixo foram realizados no Git Bash.

Obtem-se o commit id desejado de branch_joao

git log
Enter fullscreen mode Exit fullscreen mode
commit 0b90d263bd15107c09955d735e8a671f537b4e4e
Author: João Oliveira 
Date:   Wed Jun 8 12:11:46 2022 -0300

Substituição de EmailHelper por MailKitHelper
Enter fullscreen mode Exit fullscreen mode

Obtem-se o código mais recente de todas as branches

git fetch --all     
Enter fullscreen mode Exit fullscreen mode

Cria-se uma nova branch baseada na master.

git checkout -b branch_joao_nova master      
Enter fullscreen mode Exit fullscreen mode

Aplica-se a alteração desejada na branch. No meu caso, seria o id abaixo.

git cherry-pick 0b90d263bd15107c09955d735e8a671f537b4e4e
Enter fullscreen mode Exit fullscreen mode

Executa-se o pushcom as alterações para a branch remota.

git push -u origin branch_joao_nova
Enter fullscreen mode Exit fullscreen mode

Para exemplificar, as branches ficaram assim. Suprimi homolog e branch_outro_dev para facilitar a leitura.

Nova branch e cherry pick

Depois disso, cria-se um Pull Request para a master e a situação foi contornada.

Claro, neste exemplo não foi abordado nenhum conflito entre commits ou outro tipo de situação que envolveria uma maior intervenção.

Espero ter ajudado.

Referências:
https://git-scm.com/docs/git-cherry-pick
https://www.atlassian.com/git/tutorials/cherry-pick

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay