Cette réponse a été révisée, car ma compréhension, les diagrammes et les conclusions étaient incorrects.
git pull
provoque des validations de fusion car git fusionne. Cela peut être changé en paramétrant vos branches pour utiliser le rebase au lieu de la fusion. L'utilisation du rebase au lieu de la fusion sur une extraction fournit un historique plus linéaire au référentiel partagé. D'autre part, les commits de fusion montrent les efforts de développement parallèles sur la branche.
Par exemple, deux personnes travaillent sur la même succursale. La branche commence comme:
...->C1
La première personne termine son travail et pousse à la succursale:
...->C1->C2
La deuxième personne termine son travail et veut pousser, mais ne peut pas parce qu'elle doit mettre à jour. Le référentiel local de la deuxième personne ressemble à ceci:
...->C1->C3
Si l'extraction est définie pour fusionner, le deuxième référentiel de personnes ressemblera à.
...->C1->C3->M1
\ /
->C2->
Où M1 est un commit de fusion. Cette nouvelle histoire de branche sera poussée vers le repo. Si à la place, l'extraction est définie pour rebaser le dépôt local ressemblerait à ceci:
...->C1->C2->C3
Il n'y a pas de validation de fusion. L'histoire a été rendue plus linéaire.
Les deux choix reflètent l'histoire de la succursale. git vous permet de choisir l'historique que vous préférez.
Il existe en effet des endroits où le rebase peut poser problème avec les branches distantes. Ce n'est pas un de ces cas. Nous préférons utiliser rebase car il simplifie un historique de branche déjà compliqué et montre une version de l'historique relative au référentiel partagé.
Vous pouvez définir branch.autosetuprebase = always pour que git établisse automatiquement vos branches distantes en tant que rebase au lieu de master.
git config --global branch.autosetuprebase always
Ce paramètre oblige git à créer automatiquement un paramètre de configuration pour chaque branche distante:
branch.<branchname>.rebase=true
Vous pouvez le définir vous-même pour vos succursales distantes déjà configurées.
git config branch.<branchname>.rebase true
Je tiens à remercier @LaurensHolst pour ses questions et pour la suite de mes déclarations précédentes. J'ai certainement appris plus sur le fonctionnement de git avec les commits pull et merge.
Pour plus d'informations sur les validations de fusion, vous pouvez lire Contribuer à un projet dans ProGit-Book . La section Petite équipe privée affiche les validations de fusion.
git log --no-merges