Introdução
🧑💻 Novo no Git ou no LabEx? Recomendamos começar com o curso Quick Start with Git.
Git é um poderoso sistema de controle de versão que permite aos desenvolvedores colaborar em projetos de forma eficiente. Uma das funcionalidades do Git é o fast-forward merging (mesclagem de avanço rápido), que permite ao Git mesclar automaticamente branches (ramificações) que não possuem commits divergentes. No entanto, essa funcionalidade pode, por vezes, causar problemas, especialmente ao trabalhar em projetos maiores com múltiplos contribuidores. Neste laboratório, você aprenderá como desabilitar o fast-forward merging por padrão.
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 arquivohello.txte 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
mastere mescle a branchmy-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'
Resumo
Neste laboratório, você aprendeu como desabilitar o fast-forward merging por padrão. Isso pode ser útil ao trabalhar em projetos maiores com múltiplos contribuidores, pois pode ajudar a prevenir conflitos e facilitar o gerenciamento de alterações. Ao usar o comando git config, você pode desabilitar o fast-forward merging para todas as branches, mesmo que seja possível.