Opção Git Merge -No -FF

Opção Git Merge -No -FF

Compreendendo o Git mescle no-ff opção

A capacidade de mesclagem fácil do git é um de seus pontos fortes. Durante uma mesclagem, o Git usa fusão de avanço rápido quando percebe que o chefe do ramo atual é um ancestral do Commit que você está tentando se fundir. Em uma fusão rápida, não há um novo compromisso. Git apenas move o ponteiro. Se esse comportamento não for desejável, você pode usar a bandeira no-ff para criar uma nova confirmação para a mesclagem.

Como a mesclagem fica com e sem avanço rápido

Depois de um avanço rápido, seu histórico de git ficará assim:

C0 -> C1 -> C2-> C3

Para o mesmo número de começos, aqui está uma história de mesclagem sem avanço rápido:

No primeiro caso, não há indicação de que houve alguma ramificação. No segundo caso, a história está mostrando um compromisso C4 para indicar onde ocorreu a mesclagem.

Caminhando por um exemplo

Você criará um repositório Git, criará um ramo e depois experimentará as mescladas com e sem avanço rápido.

Seção 1: Configuração

Primeiro, você pode criar o repositório Git com as seguintes etapas:

$ mkdir my_project
$ cd my_project
$ git init
$ toque a.TXT
$ git add -a
$ git Commit -M "C0: Adicionando um.TXT"

Agora vamos criar um ramo chamado recursos e cometer algumas mudanças:

Recursos de ramificação $ git
Recursos de checkout de $ git
$ touch b.TXT
$ git add -a
$ git Commit -M "C1: Adicionando B.TXT"
$ toque c.TXT
$ git add -a
$ git Commit -M "C2: Adicionando C.TXT"
$ touch d.TXT
$ git add -a
$ git Commit -M "C3: Adicionando D.TXT"

Seção 2: Mesclar com o avanço rápido

Vamos voltar ao ramo Master Branch e Merge Recursos Branch nele:

$ git checkout mestre
Recursos de fusão de $ git

Saída:

Atualizando 08076FB… 9EE88EB
Avanço rápido
b.txt | 0
c.txt | 0
d.txt | 0
3 arquivos alterados, 0 inserções (+), 0 deleções (-)
Criar modo 100644 b.TXT
Criar modo 100644 c.TXT
criar modo 100644 d.TXT

Se você verificar o histórico, você verá:

$ git log --oneeline
9EE88EB C3: Adicionando D.TXT
C72B92C C2: Adicionando C.TXT
2E4039E C1: Adicionando B.TXT
08076FB C0: Adicionando um.TXT

Então, todos os compromissos do ramo de recursos estão no ramo principal agora. Se você continuar fazendo alterações para dominar, não há como saber quando a filial dos recursos foi mesclada.

Seção 3: Sem avanço rápido

Repita a seção 1 para uma nova pasta.

Em seguida, tente uma fusão sem avançar rapidamente:

$ git checkout mestre
Recurso $ git mescla-no-ff

Ele abrirá o seguinte no editor de texto padrão do seu git:

Merge Branch 'Recursos'
# Por favor, insira uma mensagem de confirmação para explicar por que essa mesclagem é necessária,
# Especialmente se ele mesclará um upstream atualizado em uma filial de tópicos.
#
# Linhas começando com '#' serão ignoradas e uma mensagem vazia aborta
# o compromisso.

Modifique os comentários. Nesse caso, você pode apenas adicionar "C4:" Antes de "Ramo de Merge 'Recursos'". A saída deve ficar assim:

Merge feita pela estratégia 'recursiva'.
b.txt | 0
c.txt | 0
d.txt | 0
3 arquivos alterados, 0 inserções (+), 0 deleções (-)
Criar modo 100644 b.TXT
Criar modo 100644 c.TXT
criar modo 100644 d.TXT

Agora, se você verificar o histórico, deve parecer o seguinte:

$ git log --oneeline
E071527 C4: Ramo de Merge 'Recursos'
BB79C25 C3: Adicionando D.TXT
692BD8C C2: Adicionando C.TXT
A0DF62A C1: Adicionando B.TXT
7575971 C0: Adicionando um.TXT

Você pode ver que, embora tenha exatamente as mesmas alterações, esta versão do Merge tem o comprometimento C4 extra que significa a fusão de Recursos Branch em Master.

Conclusão

A bandeira Git Merge No-FF ajuda a criar um histórico mais legível. Ele permite que você coloque tags que mostrem claramente onde as mesclagem ocorreram. Pode economizar tempo e esforço durante a depuração.

Um estudo mais aprofundado:

  • https: // git-scm.com/docs/git-merge
Referências:
  • Overflow de pilha: o que é a diferença entre git-git-merge-e-Git-Merge-no-ff
  • https: // www.Atlassiano.com/git/tutoriais/useling shanches/git-merge