Le problème
Par défaut, un git pull est équivalent à git fetch et git merge.
Les merge, c'est bien pour les branches, mais pour le tronc, c'est pénible : ça pollue l'historique et ça zig-zag sévère !
La solution
En réalité, quand on travaille sur le tronc, ce qu'on veut c'est faire git fetch et git rebase. C'est à dire, au lieu de ça :
A-----B-----C master / \ D---E---F---G---H---I origin/master
on veut ça :
A---B---C master / D---E---F---G---H origin/master
Autrement dit, un git pull --rebase ! Pour le faire par défaut :
git config --global branch.autosetuprebase always
Et ensuite, au cas-où, pour le désactiver ponctuellement, utiliser git pull --no-rebase.
Maintenant, le tronc, il est tout propre !
Les conséquences ?
Lors d'un git pull, il faudra résoudre chaque commit conflictuel indépendamment (perso, je préfère).
Les êtres humains voudront utiliser meld. Il suffit de l'installer, et lors d'un conflit, de lancer git mergetool.
Une fois que tous les conflits sont résolus, terminer l'opération, avec git rebase --continue, et pousser vos prouesses à vos amis avec git push.
#git, #tips - Posted in the Dev category