Git cherry pick illo

Cherry-pick do Git

 

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 uma confirmação da ramificação e fazer a aplicação da 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

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. Dito isto, 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 um novo recurso 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. Isto permitiria ao desenvolvedor front-end continuar o progresso no lado do projeto.

Hotfixes de bugs

Quando um bug é descoberto, é importante fornecer uma resolução aos usuários finais o mais rápido possível. Por exemplo, digamos que um desenvolvedor começou a trabalhar no novo recurso. Durante esse desenvolvimento do novo recurso, ele identificou um bug preexistente. O desenvolvedor cria o commit explícito corrigindo esse bug. Esse novo commit de correção pode, através do cherry picking, ser passado com objetividade para a branch principal para solucionar o bug antes que este afete mais usuários.

Desfazer alterações e restaurar commits perdidos

Às vezes a ramificação de recurso pode ficar obsoleta e não se mesclar na principal. Às vezes a solicitação pull pode ser fechada sem mesclar. O Git nunca perde esses commits e, por comandos como git log e git reflog, eles podem ser encontrados e retornar à vida por meio do cherry picking.

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   Master
         \
           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 usando o git log. Neste exemplo, vamos supor que queremos usar o commit "f" na branch principal. Em primeiro lugar, nos certificamos de que estamos trabalhando na branch principal.

git checkout master

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   Master
         \
           e - f - g Feature

O commit f foi colocado na ramificação do recurso

Exemplos de cherry-pick do git

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 a linha de assinatura de "signoff" no final da mensagem de commit de 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 .

Além disso, 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.