O que significa escolher um commit com git?

Recentemente, pediram-me para escolher um commit. Mas não tenho ideia do que isso significa. Então, o que a cherry picking um commit no git significa? Como você faz isso?

Colheita de cereja no git significa escolher um commit de um branch e aplicá-lo em outro.

Isso está em contraste com outras formas, como merge e rebase que normalmente aplicam muitos commits a outra ramificação.

  1. Certifique-se de estar no ramo ao qual você deseja aplicar o commit.

     git checkout master 
  2. Execute o seguinte:

     git cherry-pick  

NB:

  1. Se você escolher a partir de um ramo público, você deve considerar o uso

     git cherry-pick -x  

    Isso gerará uma mensagem de confirmação padronizada. Dessa forma, você (e seus colegas de trabalho) ainda podem acompanhar a origem do commit e evitar conflitos de mesclagem no futuro.

  2. Se você tiver notas anexadas ao commit, elas não seguirão a escolha certa. Para trazê-los também, você tem que usar:

     git notes copy   

Links adicionais:

  • página de guia oficial do git

Esta citação é retirada de; Controle de versão com Git (Realmente ótimo livro, eu encorajo você a comprá-lo se você estiver interessado em git)

Edit: Uma vez que esta resposta ainda está ficando impressão, gostaria de adicionar muito bom em vídeo tutorial de ação sobre isso:

Youtube: Introdução ao Git cherry-pick

Usando o git cherry-pick O comando git cherry-pick commit aplica as mudanças introduzidas pelo commit nomeado na ramificação atual. Ele irá introduzir um novo compromisso distinto. Estritamente falando, usar o git cherry-pick não altera o histórico existente dentro de um repository; em vez disso, adiciona ao histórico. Como com outras operações do Git que introduzem mudanças através do processo de aplicação de um diff, você pode precisar resolver conflitos para aplicar completamente as mudanças do commit fornecido . O comando git cherry-pick é tipicamente usado para introduzir commits específicos de uma ramificação dentro de um repository em uma ramificação diferente. Um uso comum é enviar confirmações de encaminhamento ou retorno de um ramo de manutenção para um ramo de desenvolvimento.

 $ git checkout rel_2.3 $ git cherry-pick dev~2 # commit F, above 

antes: antes

depois de: depois de

O cherry picking no Git é projetado para aplicar alguns commits de um branch em outro branch. Isso pode ser feito se você, por exemplo. cometeu um erro e cometeu uma alteração no ramo errado, mas não deseja mesclar o ramo inteiro. Você pode apenas por exemplo. reverta o commit e escolha-o em outro branch.

Para usá-lo, você só precisa do git cherry-pick hash , em que hash é um commit hash de outro branch.

Para o procedimento completo, consulte: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html

O cherry-pick é um recurso do Git. Se alguém quiser Commit commits específicos em um branch para um branch de destino, então o cherry-pick é usado.
git cherry-pick passos são como abaixo.

  1. checkout (alternar para) ramificação de destino.
  2.  git cherry-pick  

    Aqui commit id é o id de atividade de outro branch.Eg.

     git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f 
  3. empurrar para o ramo alvo

Visite https://git-scm.com/docs/git-cherry-pick

Você pode pensar se uma escolha de cereja é semelhante a um rebase, ou melhor, é gerenciada como um rebase. Com isso, quero dizer que é preciso um commit existente e o regenera tomando, como ponto de partida, o chefe do branch em que você está atualmente.

Um rebase recebe um commit que tinha um pai X e regenera o commit como se ele tivesse um pai Y, e é exatamente isso que um cherry-pick faz.

Escolha de cereja é mais sobre como você seleciona os commits. Com pull (rebase), o git regenera implicitamente seus commits locais além do que é puxado para o seu branch, mas com o cherry-pick você escolhe explicitamente alguns commits e os regenera implicitamente (eles) no topo do branch atual.

Então, a maneira como você faz isso difere, mas sob o capô são operações muito semelhantes – a regeneração de commits.

É como copiar (de algum lugar) e colar (para algum lugar), mas para commits específicos.

Se você quiser fazer um hot fix, por exemplo, então você pode usar o recurso cherry-pick .

Faça o seu cherry-pick em um ramo de desenvolvimento, e merge esse commit em um branch de release. Da mesma forma, faça um cherry-pick de um branch de release para master. Voila

Intereting Posts