From ffd027a3da15a2a530064defd6639a0c79e8365d Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Tue, 1 Jul 2014 18:46:37 -0300 Subject: [PATCH] Fast-forward. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit O que significa, e algumas implicações teóricas. --- Merge.mdwn | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Merge.mdwn b/Merge.mdwn index 3c5c709..79a16ef 100644 --- a/Merge.mdwn +++ b/Merge.mdwn @@ -87,6 +87,34 @@ quando não se deve reescrevê-la. ## Fast-foward +Quando realizamos um push em um repositório, enviamos nossas +atualizações. No entanto, existe uma condição para que o Git aceite esta +atualização sem emitir um aviso. O novo commit enviado deve conter todos +os commits já presentes no branch sendo atualizado. Significa que o novo +commit deve ter o velho commit como ancestral em seu grafo de histórico. + +No exemplo anterior em que fizemos o amend, tanto o branch amend quanto +o branch devel não têm o branch master como ancestral. Isto significa +que a atualização do branch master para um destes commits não avançaria +o histórico. Não seria o que chamamos de fast-forward. + +Fazer uma atualização que não é fast-forward seria como apagar o +histórico que já ocorreu. Substituir um ramo por outro. É o que muitos +chamam de fork. Fazer fork utilizando diferentes repositórios por +diferentes pessoas, ou diferentes branches com o propósito de realizar +merges é saudável pra uma comunidade. É o que permite o envolvimento de +mais pessoas em um projeto, e a experimentação. Mas substituir um mesmo +branch público por algo que apaga parte de seu histórico pode introduzir +vários problemas no fluxo de trabalho de uma comunidade, como merges +duplicados e desnecessários, reescritas de histórico em toda a cadeia de +branches e forks, criando um efeito cascata. + +Portanto, não publique branches que não pretenda manter de forma +fast-forward, a não ser que fique claro no workflow como aquele branch +será consumido em outro branch fast-forward, ou deixando claro que o +branch será reescrito, e não deve ser utilizado como base a não ser que +o contribuidor esteja preparado para lidar com as reescritas. + ## Merge Integração de código e histórico. -- 2.20.1