O que faz o merge.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Wed, 2 Jul 2014 02:02:24 +0000 (23:02 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Wed, 2 Jul 2014 02:02:24 +0000 (23:02 -0300)
Merge.mdwn

index 969a465..09639f8 100644 (file)
@@ -127,7 +127,23 @@ 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?
 
-Integração de código e histórico.
+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.