Vamos imaginar que temos um master
ramo.
Então criamos um newbranch
git checkout -b newbranch
e faça dois novos commits para newbranch
: commit1 e commit2
Então nós mudamos para dominar e fazer cherry-pick
git checkout master
git cherry-pick hash_of_commit1
Examinando gitk
, vemos que o commit1 e sua versão escolhida com cereja têm hashes diferentes; portanto, tecnicamente, eles são dois commits diferentes.
Finalmente, nos fundimos newbranch
em master
:
git merge newbranch
e veja que esses dois commits com hashes diferentes foram mesclados sem problemas, embora impliquem que as mesmas alterações devam ser aplicadas duas vezes; portanto, um deles deve falhar.
O git realmente faz uma análise inteligente do conteúdo do commit durante a mesclagem e decide que as alterações não devem ser aplicadas duas vezes ou esses commit são marcados internamente como vinculados?
fonte
Após essa mesclagem, você pode ter confirmados na história duas vezes.
Solução para evitar isso, cito um artigo que recomenda que ramificações com confirmações duplicadas (escolhidas com cerejeira) usem rebase antes da mesclagem:
Correções de edição supostas pelo comentário de David Lemon
fonte
---Y---b2'---b4'