Cette réponse a été révisée, selon ma compréhension, les diagrammes, et les conclusions ont été incorrect.
git pull
des causes de fusion s'engage parce que git est la fusion. Cela peut être modifié par le réglage de vos branches à utiliser rebase au lieu de fusionner. L'aide de rebase au lieu de fusionner sur un pull prévoit une histoire linéaire de l'espace de stockage partagé. D'autre part, de fusion s'engage montrer les efforts de développement en parallèle sur la branche.
Par exemple, deux personnes travaillent sur la même branche. La branche commence comme:
...->C1
La première personne à finir leur travail et pousse à la direction générale:
...->C1->C2
La deuxième personne termine son travail et veut pousser, mais ne peuvent pas car ils ont besoin de mise à jour. Le référentiel local de la deuxième personne ressemble:
...->C1->C3
Si le pull est définie à fusionner, la seconde personnes référentiel va ressembler.
...->C1->C3->M1
\ /
->C2->
Où M1 est une fusion de commettre. Cette nouvelle branche de l'histoire seront poussés à la repo. Si au lieu de cela, le pull est mis à rebase le local repo ressemblerait à:
...->C1->C2->C3
Il n'y a pas de fusion s'engager. L'histoire a été rendue plus linéaire.
Les deux choix reflètent l'histoire de la branche. git vous permet de choisir l'histoire que vous préférez.
Il y a effectivement des endroits où cela peut provoquer un problème avec les branches distantes. Ce n'est pas un de ces cas. Nous préférons utiliser le rebase comme ça simplifie déjà compliqué l'histoire de la branche ainsi que le montre une version de l'histoire par rapport au référentiel partagé.
Vous pouvez définir la branche.autosetuprebase=toujours avoir git d'établir automatiquement vos branches distantes que rebase au lieu de maître.
git config --global branch.autosetuprebase always
Ce paramètre provoque git pour créer automatiquement un paramètre de configuration pour chaque branche à distance:
branch.<branchname>.rebase=true
Vous pouvez définir vous-même de votre télécommande branches qui sont déjà en place.
git config branch.<branchname>.rebase true
Je tiens à remercier @LaurensHolst de l'interrogatoire et de la poursuite de mes précédentes déclarations. J'ai certainement appris plus sur le fonctionnement de git fonctionne avec la traction et de fusion s'engage.
Pour plus d'informations sur la fusion de livraison vous pouvez lire à Contribuer à un Projet en ProGit. Le Petit de l'Équipe de la section montre de fusion s'engage.