O que significa escolher um compromisso com o git?
6 answers
Isto está em contraste com outras formas como merge
e rebase
que normalmente aplicam muitos commits em outro ramo.
-
Certifique-se que está no ramo onde quer aplicar o commit.
git checkout master
-
Execute o seguinte:
git cherry-pick <commit-hash>
N. B.:
-
Se escolheres uma coisa de um ramo público, devias considerar utilizar
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.git cherry-pick -x <commit-hash>
-
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:
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:
Depois:
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
git cherry-pick os passos são como abaixo.
-
Checkout (mudar para) ramo alvo.
-
git cherry-pick <commit id>
Aqui o ID de commit é o id de actividade de outro branch.Eg.
git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
- empurrar para o ramo alvo
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.
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