J'ai travaillé sur une équipe de développement qui préférait utiliser la méthode git fetch
puis git rebase
plutôt que la méthode git pull
, avant de pousser les changements pour éviter les conflits de fusion.Mis à part la structure de l'arbre git qui en résulte, y a-t-il des différences importantes entre git pull et git fetch + git rebase?
Existe-t-il une raison spécifique à la différence de la structure arborescente visuelle? Selon http://mattsnider.com/git-rebase-versus-git-pull/fetch
& rebase
« produira une histoire propre, sans fusion étrangère engage »
mais entre les deux méthodes sont-il d'autres raisons de choisir l'un sur l'autre?
Vous pouvez configurer 'pull' git pour exécuter' rebase' git au lieu de 'git merge' comme sa deuxième étape. En fin de compte, ça ne change pas grand-chose à * operation *, mais je pense que git pull fait un sérieux dés-service à * humains * en cachant le fait qu'il y a réellement deux étapes impliquées: 'git fetch', et puis cette deuxième étape. La commande 'pull' est également syntaxiquement dangereuse en raison de ce même défaut humain: il est trop facile de lancer' git pull origin b1 b2' et de finir par faire une fusion de poulpe, parce que * ressemble à 'git pull' fait quelque chose de magique, mais ça ne l'est vraiment pas. – torek
'git merge' crée un commit de fusion lorsqu'il ne s'agit pas d'une fusion fast-forward. Un commit de fusion n'invoque pas un hook comme 'commit-msg'. Dans certains cas, lorsque vous avez besoin de commit-msg pour faire quelque chose avec chaque nouvelle validation, le commit de fusion est ignoré à moins que vous ne le modifiiez. – ElpieKay