O que Git Cherry Pick faz e quando devo usá-lo?

Conteúdo

Logotipo do Git

git cherry-pick é uma ferramenta simples, mas poderosa que permite a você transferir commits seletivos de um branch para outro. Você pode usá-lo quando não quiser mesclar um branch inteiro no master, mas ainda assim você gostaria de incluir mudanças de um ramo de função.

O que é Git Cherry Pick e como funciona?

Top Go, commits são as unidades que rastreiam as mudanças ao longo do tempo. Cada confirmação pode representar uma correção de bug, um novo recurso ou parte de uma solução maior. Você pode pensar em commits armazenados como uma lista vinculada apontando para trás no tempo; toda vez que você muda o HEAD do seu branch, Git reconstrói os arquivos em seu diretório local levando em consideração todos os commits desde o início.

Esta é uma simplificação, de qualquer forma, e Git não armazena tecnicamente commits como simples changelists, usar blobs baseados em arquivo, Mas o princípio é o mesmo.

As coisas ficam complicadas quando as filiais se envolvem. Frequentemente, trabalhar em uma função leva vários dias ou semanas. Em vez de bagunçar o repositório principal, mover para um ramo de recurso separado, e então o código é revisado e mesclado novamente. Mesclar é simplesmente ramificar este histórico de commit para que todo o branch de recursos seja incluído quando o Git fizer seu trabalho.

Apesar disto, E se você quiser mesclar algumas coisas, mas você não quer que todo o branch seja incluído ainda? Você não pode fazer git merge nesse caso.

Aqui é onde git cherry-pick se torna útil. Faz o que o nome sugere: leva um único commit do branch de recursos, seleciona-o individualmente e aplica-o ao branch master, ou vice-versa. Isso copia a confirmação, então há um novo commit no branch de destino.

Tenga en cuenta que no hay una “linha” real que conecte la nueva confirmación en la rama maestra con la confirmación anterior. A nova confirmação cuidadosamente selecionada criada no mestre não faz referência à confirmação de origem de forma alguma, a confirmação é simplesmente copiada. O Git cuidará disso quando você mesclar os branches novamente, porque os commits parecem cópias uns dos outros.

Em efeito, la confirmación setransfierea la nueva rama, mesmo que você deva prestar atenção que a confirmação acima ainda se aplica ao ramo de características. Apesar disto, você não quer reverter a confirmação de origem, já que isso vai causar problemas ao mesclar mais tarde.

Por que escolher a cereja??

Existem alguns casos de uso para este. Talvez você esteja trabalhando em um recurso e ele não esteja pronto para ser lançado, mas você corrigiu um bug no ramo de função que gostaria de incluir em sua versão de lançamento semanal. Você pode usar a seleção seletiva para copiar a correção do bug para o Mestre para implementar mais cedo.

Ou talvez você tenha vários ramos para produção e desenvolvimento, e gostaria de copiar uma correção de bug urgente da produção para o desenvolvimento. Picareta de cereja também pode fazer isso.

Ou é possível que você tenha acidentalmente se comprometido com o branch errado. Você pode usar git cherry-pick para copiá-lo à direita, e depois git reset desfazer aquela confirmação (contanto que esteja no HEAD do branch).

Usando Git Cherry Pick

Depois de entender o que está fazendo, git cherry-pick é bastante simples de usar.

A maneira mais fácil de ver o histórico de commits do Git na linha de comando é com o seguinte comando, que mostra todos os commits, mas com um histórico de bifurcações e mesclagens, o que é crucial para usar a escolha certa:

git log --pretty = format:"%h% s" --gráfico

Depois de, você pode simplesmente copiar o hash SHA1 do commit e executar a escolha certa:

git cherry-pick 1da76d3

Observe que você também pode escolher várias confirmações ao mesmo tempo, apenas passe vários hashes.

git cherry-pick tem algumas opções úteis:

  • --no-commit apenas aplique as mudanças em seu diretório. Você precisará preparar e confirmar manualmente.
  • --edit permitirá que você altere a mensagem de confirmação.
  • -x agregará un mensaje que digacherry pick from commit: …”

Desde já, se você estiver usando um cliente Git baseado em GUI como Garfo o GitCrack, que sugerimos fortemente, você pode clicar com o botão direito no compromisso e selecioná-lo:

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.