Acrescenta um índice com outras páginas.
[cursogit.git] / Merge.mdwn
index d3b0730..09639f8 100644 (file)
@@ -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.