Desabilitar Fast Forward Merging
Por padrão, o Git utiliza o fast-forward merging para mesclar branches que não possuem commits divergentes. Isso significa que, se você tiver uma branch sem novos commits, o Git simplesmente moverá o ponteiro da branch que você está mesclando para o último commit da branch da qual você está mesclando. Embora isso possa ser útil em alguns casos, também pode causar problemas, especialmente ao trabalhar em projetos maiores com múltiplos contribuidores. Por exemplo, se dois desenvolvedores estiverem trabalhando na mesma branch e ambos fizerem alterações, o fast-forward merging pode causar conflitos difíceis de resolver.
Para desabilitar o fast-forward merging, vamos usar o repositório de https://github.com/labex-labs/git-playground.
- Clone o repositório, navegue até o diretório e configure a identidade:
git clone https://github.com/labex-labs/git-playground
cd git-playground
git config --global user.name "your-username"
git config --global user.email "your-email"
- Crie e mude para uma branch chamada
my-branch, crie um arquivo hello.txt e adicione "hello,world" a ele, adicione-o à área de staging e faça o commit com a mensagem "Added hello.txt":
git checkout -b my-branch
echo "hello,world" > hello.txt
git add .
git commit -m "Added hello.txt"
- Execute o seguinte comando para desabilitar o fast-forward merging:
git config --add merge.ff false
Isso desabilitará o fast-forward merging para todas as branches, mesmo que seja possível. Você pode usar a flag --global para configurar esta opção globalmente:
git config --global --add merge.ff false
- Volte para a branch
master e mescle a branch my-branch, salve e saia sem alterar o texto:
git checkout master
git merge my-branch
Agora, o Git sempre criará um merge commit, mesmo que seja possível fazer fast forward:
commit 6e17a776ab51a89ace069614b0caf1c07915a92c (HEAD -> master)
Merge: ec5ea6d 6d7de91
Author: xiaoshengyunan <@users.noreply.github.com>
Date: Mon Jul 17 13:30:44 2023 +0800
Merge branch 'my-branch'