Git Cherry Pick

git cherry-pick é um comando poderoso que permite que Git commits arbitrários sejam escolhidos por referência e anexados à CABEÇA de trabalho atual. Cherry picking é o ato de escolher um commit a partir de um ramo e aplicá-lo a outro. git cherry-pick pode ser útil para desfazer alterações. Por exemplo, digamos que um commit é feito acidentalmente para um ramo errado. Você pode mudar para o ramo correto e escolher o commit para onde ele deve pertencer.

Quando usar git cherry pick

git cherry-pick é uma ferramenta útil mas nem sempre uma boa prática. A apanha da cereja pode causar commits duplicados e muitos cenários onde a apanha da cereja funcionaria, as fusões tradicionais são preferidas em vez disso. Com isto dito git cherry-pick é uma ferramenta útil para alguns cenários…

Colaboração da equipe.

Muitas vezes uma equipe vai encontrar membros individuais trabalhando no mesmo código ou em torno do mesmo código. Talvez uma nova funcionalidade do produto tenha um componente backend e frontend. Pode haver algum código compartilhado entre dois setores de produto. Talvez o desenvolvedor do backend crie uma estrutura de dados que o frontend também precisará utilizar. O desenvolvedor do frontend poderia usar git cherry-pick para escolher o commit no qual esta estrutura de dados hipotética foi criada. Esta escolha permitiria ao desenvolvedor do frontend continuar o progresso do seu lado do projeto.

Bug hotfixes

Quando um bug é descoberto é importante entregar uma correção para os usuários finais o mais rápido possível. Para um cenário exemplo,digamos que um desenvolvedor começou a trabalhar em um novo recurso. Durante o desenvolvimento desse novo recurso, eles identificam um bug pré-existente. O desenvolvedor cria um commit explícito corrigindo este bug. Este novo patch commit pode ser escolhido diretamente no ramo master para corrigir o bug antes que ele afete mais usuários.

Desfazer mudanças e restaurar commits perdidos

Algumas vezes um ramo feature pode ficar obsoleto e não ser mesclado em master. Algumas vezes um pedido de puxar pode ser fechado sem fusão. Git nunca perde esses commits e através de comandos como git log e git reflog eles podem ser encontrados e a cereja pode ser escolhida de volta à vida.

Como usar git cherry pick

Para demonstrar como usar git cherry-pick vamos assumir que temos um repositório com o seguinte estado de ramo:

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

git cherry-pick o uso é direto e pode ser executado como:

git cherry-pick commitSha

Neste exemplo commitSha é uma referência de commit. Você pode encontrar uma referência de submissão usando git log. Neste exemplo nós construímos vamos dizer que queremos utilizar commit `f` em master. Primeiro asseguramos que estamos trabalhando no ramo master.

git checkout master

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

git cherry-pick f

Once executou o nosso histórico de Git será parecido:

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

O f commit foi escolhido com sucesso no ramo master

Exemplos de git cherry pick

git cherry pick também podem ser passadas algumas opções de execução.

-edit

Passando a opção -edit o git solicitará uma mensagem de commit antes de aplicar a operação cherry-pick

>

--no-commit

A opção --no-commit irá executar o cherry pick mas em vez de fazer um novo commit irá mover o conteúdo do commit alvo para o diretório de trabalho do ramo atual.

--signoff

A opção --signoff irá adicionar uma linha de assinatura ‘signoff’ ao fim da mensagem de commit do cherry-pick

Além destas opções úteis git cherry-pick também aceita uma variedade de opções de estratégia de merge. Aprenda mais sobre estas opções na documentação de estratégias de fusão do git.

Adicionalmente, git cherry-pick também aceita a entrada de opções para a resolução de conflitos de fusão, isto inclui opções: --abort --continue e --quitestas opções são cobertas com mais profundidade em relação a git merge e git rebase.

Resumo

A escolha deherry é um comando poderoso e conveniente que é incrivelmente útil em alguns cenários. A separação de cereja não deve ser mal utilizada no lugar de git merge ou git rebase. O comando git log é necessário para ajudar a encontrar commits para a escolha de cereja.

Deixe uma resposta

O seu endereço de email não será publicado.