J'utilise GitHub depuis un certain temps maintenant et j'avais l'habitude de pousser mes branches de fonctionnalités puis de lancer une Pull Request que j'ai moi-même fusionnée. J'ai trouvé que cela m'a aidé à garder une trace de l'endroit où j'ai fusionné les succursales.
Mais récemment, j'ai lu de plus en plus sur le fonctionnement de Git et j'ai réalisé que je pouvais utiliser les merge-commits pour faire référence à la fusion de branches.
Alors, que dois-je faire lors de la fusion d'une branche de fonctionnalité en maître:
effectuer une fusion-validation sur le maître puis la pousser en amont OU pousser la branche locale et démarrer une demande de tirage?
J'ai lu Présentation des demandes de tirage pour une équipe de 2 personnes - fusionner mes propres demandes? et Quel est le flux de travail avec 2 personnes sur un projet et dois-je ouvrir les demandes de tirage d'une succursale sur le référentiel officiel ou ma fourchette? mais aucun d'eux ne semble répondre à ce que je recherche.
la source
Réponses:
mécanisme git-fusion:
L' utilisation
git merge feature
pendant maître fusionne la branchefeature
àmaster
et produit unmerge-commit
(si la branche ne peut pas être transmis-rapide) dans l'histoire git. Pour forcer unemerge-commit
création, utilisez l'--no-ff
option avecmerge
.Mécanisme de fusion de demande de tirage:
lorsque nous démarrons une demande de tirage sur GitHub, il crée un
GitHub Issue
endroit où les gens peuvent parler et discuter des validations dans le PR avant de le fusionner. Lorsqu'un PR est fusionné sur GitHub, il fait exactement la même chose quegit merge feature
.Que devrais-je faire?
Donc, en ce qui concerne l'histoire, il n'y a pas de différence entre les deux.
Et en ce qui concerne la contribution, vos contributeurs n'auront rien de différent pour les deux situations. Ce sont les mêmes (moins le joli petit chat).
Meilleures pratiques:
Et je n'ai pas pu trouver de meilleures pratiques, mais la logique dit que les RP ne sont pas très utiles s'il n'y a qu'une seule personne dans le référentiel.
@lxrec et @amon m'ont aidé à parvenir à cette conclusion.
la source
git merge
peut ne pas enregistrer un commit de fusion s'il peut effectuer une «avance rapide». Pour forcer un commit de fusion, vous pouvez ajouter l'--no-ff
option.Comme l'a dit Ashhar , techniquement et historiquement, il n'y a pas de différence. Pour les projets avec une petite équipe, je préfère fusionner directement au lieu de l'étape supplémentaire de création d'un PR. Cependant, lorsqu'une fonctionnalité doit être revue / commentée ou lorsqu'il s'agit d'un WIP et que plus d'une personne y travaillera, j'ai tendance à ouvrir un PR et à ajouter une liste de tâches à la description du PR.
Notez que
git merge
peut utiliser l'avance rapide s'il n'y a pas de modifications à master, vous pouvez donc utilisergit merge --no-ff
. J'ai tendance à ne pas le faire.Donc, en résumé, n'utilisez les RP que lorsque vous avez besoin de discussion. Sinon, fusionnez directement.
la source