O que significa escolher um compromisso com o git?

Recentemente, pediram-me para escolher um compromisso. Mas não faço ideia do que significa. Então o que significa um commit no git? Como é que consegues?

Author: robingrindrod, 2012-02-18

6 answers

Escolher uma cereja no git significa escolher um commit de um ramo e aplicá-lo em outro.

Isto está em contraste com outras formas como merge e rebase que normalmente aplicam muitos commits em outro ramo.

  1. Certifique-se que está no ramo onde quer aplicar o commit.

    git checkout master
    
  2. Execute o seguinte:

    git cherry-pick <commit-hash>
    

N. B.:

  1. Se escolheres uma coisa de um ramo público, devias considerar utilizar
    git cherry-pick -x <commit-hash>
    
    Isto irá gerar uma mensagem de commit padronizada. Desta forma, você (e seus colegas de trabalho) ainda podem acompanhar a origem do commit e podem evitar conflitos de fusão no futuro.
  2. Se você tem notas anexadas ao commit eles não seguem o cherry-pick. Para trazê-los também, você tem que usar:

    git notes copy <from> <to>
    

Ligações adicionais:

 1747
Author: Philip Fourie, 2018-06-14 15:02:16

Esta citação é retirada de; controlo de versões com o Git (Realmente grande livro, eu encorajo você a comprá-lo se você está interessado em git)

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

Youtube: Introdução ao git cherry-pick

Se usar o git cherry-escolha o comando git cherry-escolha a persistência aplica o alterações introduzidas pelo commit nomeado no ramo actual. Ele poder introduza um novo commit distinto. estritamente falando, usando git cherry-pick não altera o histórico existente num repositório; em vez disso, acrescenta à história. Como com outras operações Git que introduzir alterações através do processo de aplicação de um diff, poderá ter de resolva os conflitos para aplicar por completo as alterações do commit indicado . O comando git cherry-pick é normalmente usado para introduzir particular commits from one branch within a repository into a ramo diferente. A o uso comum é o envio de commits de Port - a-frente de uma manutenção ramo para um ramo de desenvolvimento.

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

Depois: after

 195
Author: Teoman shipahi, 2017-11-19 19:59:34
A selecção de cerejas no Git foi concebida para aplicar algum commit de um ramo para outro. Pode ser feito se você eg. cometeu um erro e cometeu uma mudança no branch errado, mas não quer fundir o branch inteiro. Você pode apenas eg. reverte o commit e escolhe-o noutro ramo.

Para usá-lo, você só precisa {[[0]}, onde hash é um hash de commit de outro ramo.

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

 129
Author: Tadeck, 2016-01-14 10:41:34
A escolha da cereja é uma característica do Git. Se alguém quiser cometer commits específicos em um branch para um branch alvo, então cherry-pick é usado.
git cherry-pick os passos são como abaixo.
    Checkout (mudar para) ramo alvo.
  1. git cherry-pick <commit id>
    

    Aqui o ID de commit é o id de actividade de outro branch.Eg.

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

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

 27
Author: Vijay S B, 2018-05-09 00:48:31
Pode-se pensar se uma picareta de cereja é semelhante a um rebase, ou melhor, é gerida como um rebase. Com isto, quero dizer que é preciso um compromisso existente e regenera-o tomando, como ponto de partida, o chefe do ramo em que você está atualmente.

A rebase toma um commit que tinha um x pai e regenera o commit como se tivesse um Y pai, e isto é precisamente o que um cherry-pick faz.

Cherry pick é mais sobre como você seleciona os commits. Com pull (rebase), git implicitamente regenera os seus commits locais em cima do que é puxado para o seu ramo, mas com cherry-pick você explicitamente escolhe alguns commit (s), e implicitamente regenera-os (eles) em cima do seu ramo actual.

Assim a maneira que você faz isto difere, mas sob o capô Eles são operações muito semelhantes-a regeneração dos commits.

 8
Author: Hugh, 2018-04-11 22:00:30
É como Copiar (de algum lugar) e colar (para algum lugar), mas para commits específicos.

Se você quiser fazer uma correção quente, por exemplo, então você pode usar a funcionalidade cherry-pick.

Faça o seu {[[0]} num ramo de desenvolvimento, e merge que se comprometem com um ramo de lançamento. Da mesma forma, faça um {[[0]} de um ramo de lançamento para mestre. Voila

 4
Author: Ajeet Sharma, 2018-04-11 21:54:23