X-Git-Url: http://git.cascardo.eti.br/?p=cursogit.git;a=blobdiff_plain;f=Merge.mdwn;h=09639f8acd9de6a06da89af70a0ce671521fa8f4;hp=d3b0730c82f9f6a03b2973f30c80a1cdf1c14333;hb=HEAD;hpb=73f5e80c93b9b3c5b7028c87a4b052a07729720c diff --git a/Merge.mdwn b/Merge.mdwn index d3b0730..09639f8 100644 --- a/Merge.mdwn +++ b/Merge.mdwn @@ -122,7 +122,28 @@ publicados. ## Merge -Integração de código e histórico. +Como podemos, então, produzir um commit fast-forward que integre o +trabalho feito no branch devel? É possível criar um commit que seja +fast-forward tanto do branch master quanto do branch devel? Ou de +quaisquer dois commits? + +Lembre-se que dissemos que um commit pode ter um ou mais genitores. Se +pudermos criar um commit que tenha os dois commits apontados pelos +branches master e devel como genitores, teremos um commit que permite +fast-forward para ambos. + +Esse é um dos papéis do merge. O comando git merge permite criar um +commit com mais de um genitor. Mas ele faz mais que isso. Ele combina as +árvores de arquivos dos commits que farão parte do merge. A estratégia +utilizada para fazê-lo pode ser configurada e o padrão depende de +quantos commits fazem parte do merge. No caso comum, dois commits fazem +parte do merge, e a estratégia de combinar as duas árvores é um 3-way +merge recursivo, que compara as árvores dos dois commits com um +ancestral comum, e aplica as mudanças encontradas em ambas as árvores +dos dois commits. + +O resultado é um novo commit com dois genitores, e uma árvore com +mudanças realizadas nos dois branches. ~/project$ git merge devel Faz o merge de testes.