Considere a seguinte situação:
- Você tem um clone de um repositório git
- Você tem algumas confirmações locais (confirmações que ainda não foram enviadas a lugar algum)
- O repositório remoto possui novas confirmações que você ainda não reconciliou
Então, algo como isto:
Se você executar git pull
com as configurações padrão, obterá algo como isto:
Isso ocorre porque o git executou uma mesclagem.
Existe uma alternativa, no entanto. Você pode dizer ao pull para fazer uma nova rebase:
git pull --rebase
e você obterá isso:
Na minha opinião, a versão rebased tem inúmeras vantagens, principalmente centradas em manter o seu código e o histórico limpos, então estou um pouco impressionado com o fato de o git fazer a mesclagem por padrão. Sim, os hashes dos commits locais serão alterados, mas isso parece um preço pequeno a pagar pelo histórico mais simples que você recebe em troca.
De maneira alguma, estou sugerindo que, de alguma forma, isso é um padrão ruim ou errado. Estou tendo problemas para pensar nos motivos pelos quais a mesclagem pode ser preferida para o padrão. Temos alguma ideia de por que foi escolhido? Existem benefícios que o tornam mais adequado por padrão?
A principal motivação para essa pergunta é que minha empresa está tentando estabelecer alguns padrões de linha de base (espero, mais parecidos com diretrizes) sobre como organizamos e gerenciamos nossos repositórios para facilitar aos desenvolvedores a abordagem de um repositório com o qual não haviam trabalhado antes. Estou interessado em defender que normalmente devemos refazer esse tipo de situação (e provavelmente por recomendar que os desenvolvedores definam sua configuração global para refazer o rebote por padrão), mas se eu fosse contrário a isso, certamente perguntaria por que o rebase não é ' o padrão, se é tão bom. Então, eu estou querendo saber se há algo que estou faltando.
Foi sugerido que esta pergunta é uma duplicata de Por que tantos sites preferem "git rebase" ao "git merge"? ; no entanto, essa pergunta é um pouco o inverso desta. Ele discute os méritos de rebase sobre mesclagem, enquanto essa pergunta pergunta sobre os benefícios da mesclagem sobre rebase. As respostas refletem isso, concentrando-se nos problemas de mesclagem e nos benefícios da rebase.