Considérez la situation suivante:
- Vous avez un clone d'un dépôt git
- Vous avez des commits locaux (commits qui n'ont encore été poussés nulle part)
- Le référentiel distant a de nouveaux commits que vous n'avez pas encore rapprochés
Donc, quelque chose comme ça:
Si vous exécutez git pull
avec les paramètres par défaut, vous obtiendrez quelque chose comme ceci:
C'est parce que git a effectué une fusion.
Il y a une alternative, cependant. Vous pouvez dire tirer pour faire une rebase à la place:
git pull --rebase
et vous obtiendrez ceci:
À mon avis, la version rebasée présente de nombreux avantages, notamment centrés sur la propreté de votre code et de l'historique, je suis donc un peu frappé par le fait que git effectue la fusion par défaut. Oui, les hachages de vos commits locaux seront modifiés, mais cela semble être un petit prix à payer pour la simple histoire que vous obtenez en retour.
En aucun cas, je ne suggère que ceci est en quelque sorte un mauvais ou un mauvais défaut, cependant. J'ai simplement du mal à penser aux raisons pour lesquelles la fusion pourrait être préférée pour la valeur par défaut. Avons-nous une idée de la raison pour laquelle il a été choisi? Y at-il des avantages qui le rendent plus approprié par défaut?
La principale motivation de cette question est que mon entreprise essaie d'établir des normes de base (mieux comme des lignes directrices) sur la manière dont nous organisons et gérons nos référentiels afin de permettre aux développeurs de s'approcher plus facilement d'un référentiel avec lequel ils n'ont jamais travaillé auparavant. Je suis intéressé à présenter un argument selon lequel nous devrions normalement nous rebaser dans ce type de situation (et probablement pour recommander aux développeurs de définir leur configuration globale sur rebase par défaut), mais si je m'opposais à cela, je demanderais certainement pourquoi rebase n'est pas compatible. t le défaut si c'est si grand. Je me demande donc s'il manque quelque chose.
Il a été suggéré que cette question est un double de Pourquoi tant de sites préfèrent « rebasage git » sur « git merge »? ; Cependant, cette question est un peu à l’ inverse de celle-ci. Il traite des avantages de la fusion sur la fusion, alors que cette question porte sur les avantages de la fusion sur la fusion. Les réponses qui y figurent reflètent cela, en mettant l’accent sur les problèmes de fusion et les avantages de la réassurance.