O que é o Git fast-forwarding? [duplicado]

esta pergunta já tem uma resposta aqui:

Isto pode parecer uma pergunta Parva, mas não consigo encontrar uma resposta simples.

é correcto assumir que o fast-forward significa que todos os commits são reproduzidos no ramo alvo e o HEAD está definido como o último compromisso naquele ramo?

 22
git
Author: adrianvlupu, 2015-04-16

2 answers

Quando você tenta fundir um commit com um commit que pode ser alcançado seguindo o histórico do primeiro commit, o Git simplifica as coisas movendo o ponteiro para a frente porque não há trabalho divergente para se fundir – isto é chamado de "fast-forward"."

Para mais: http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

De outra forma,

Se o Mestre não divergiu, em vez de criar um novo commit, o git irá basta apontar o mestre para o o envio mais recente do ramo de recursos. Este é um "fast forward"."Não haverá nenhum" merge commit " na junção de encaminhamento rápido.

 21
Author: Abimaran Kugathasan, 2015-04-16 11:56:24

No Git, "avançar rapidamente" significa actualizar o {[[0]} ponteiro de tal forma que o seu novo valor seja um descendente directo do valor anterior. Por outras palavras, o valor anterior é um progenitor, um avô ou um avô ...

O encaminhamento rápido não é possível quando o novo {[[0]} está num estado divergente em relação ao fluxo que pretende integrar. Por exemplo, você está em master e tem commits locais, e git fetch trouxe novos commits upstream para origin/master. O ramo agora desvia-se do seu rio e não pode ser rapidamente encaminhado:master HEAD o commit não é um ancestral de origin/master HEAD. Para simplesmente reiniciar master para o valor de origin/master iria descartar os seus commits locais. A situação requer um ajuste de base ou junção.

Se o seu local master não tiver alterações, então pode ser rápido-encaminhado: simplesmente actualizado para apontar para o mesmo commit que o mais recente origin/master. Normalmente, não são necessários passos especiais para fazer o encaminhamento rápido; é feito por merge ou rebase na situação em que há não existem commits locais.

é correcto assumir que o fast-forward significa que todos os commits são reproduzidos no ramo alvo e o cabeçalho é definido para o último commit nesse ramo?

Não, isso é chamado rebasing , dos quais fast-forwarding é um caso especial quando não há nenhum commits a ser replayed (e o branch alvo tem novos commits, e o histórico do branch alvo não foi reescrito, de modo que todos os commits no branch alvo têm a actual como ancestral.)

 7
Author: Kaz, 2015-04-16 14:08:10