Réponses:
La fonction de «demande de fusion» de GitLab est équivalente à la fonction de «demande de tirage» de GitHub . Les deux sont des moyens d'extraire les modifications d'une autre branche ou fourchette dans votre branche et de les fusionner avec votre code existant. Ce sont des outils utiles pour la révision du code et la gestion des changements.
Un article de GitLab explique les différences de dénomination de la fonctionnalité:
Les demandes de fusion ou d'extraction sont créées dans une application de gestion git et demandent à une personne affectée de fusionner deux branches. Des outils tels que GitHub et Bitbucket choisissent la demande d'extraction de nom, car la première action manuelle consiste à extraire la branche de fonctionnalité. Des outils tels que GitLab et Gitorious choisissent la demande de fusion de noms, car il s'agit de l'action finale demandée au cessionnaire. Dans cet article, nous les désignerons comme des demandes de fusion.
Une "demande de fusion" ne doit pas être confondue avec la git merge
commande. Une "pull request" ne doit pas non plus être confondue avec la git pull
commande. Les deux git
commandes sont utilisées en arrière-plan dans les demandes d'extraction et les demandes de fusion, mais une demande de fusion / extraction fait référence à un sujet beaucoup plus large que ces deux commandes.
Ce sont les mêmes caractéristiques
Les demandes de fusion ou d'extraction sont créées dans une application de gestion git et demandent à une personne affectée de fusionner deux branches. Des outils tels que GitHub et Bitbucket choisissent la demande d'extraction de nom, car la première action manuelle consiste à extraire la branche de fonctionnalité. Des outils tels que GitLab et Gitorious choisissent la demande de fusion de noms, car il s'agit de l'action finale demandée au cessionnaire. Dans cet article, nous les désignerons comme des demandes de fusion.
À mon avis, ils signifient la même activité mais sous des angles différents:
Pensez-y, Alice fait quelques commits sur le référentiel A, qui est issu du référentiel B. de Bob
Quand Alice veut "fusionner" ses changements en B, elle veut en fait que Bob "tire" ces changements de A.
Par conséquent, du point de vue d'Alice, il s'agit d'une "demande de fusion", tandis que Bob la considère comme une "demande d'extraction".
Il existe une différence subtile en termes de gestion des conflits. En cas de conflits, une pull request dans Github entraînera une validation de fusion sur la branche de destination . Dans Gitlab, lorsqu'un conflit est détecté, les modifications apportées seront sur un commit de fusion sur la branche source .
Voir https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html
"GitLab résout les conflits en créant une validation de fusion dans la branche source qui n'est pas automatiquement fusionnée dans la branche cible. Cela permet à la validation de fusion d'être examinée et testée avant que les modifications ne soient fusionnées, empêchant les modifications involontaires d'entrer dans la branche cible sans révision ni rupture la construction. "
GitLab 12.1 (juillet 2019) introduit une différence:
" Fusionner les demandes de problèmes confidentiels "
Lorsque vous discutez, planifiez et résolvez des problèmes confidentiels, tels que des vulnérabilités de sécurité, il peut être particulièrement difficile pour les projets open source de rester efficaces car le référentiel Git est public.
Depuis la version 12.1, il est désormais possible de résoudre les problèmes confidentiels d'un projet public dans un flux de travail rationalisé à l'aide du bouton Créer une demande de fusion confidentielle, qui vous aide à créer une demande de fusion dans une branche privée du projet.
Voir « Problèmes confidentiels » du numéro 58583 .
Une fonctionnalité similaire existe dans GitHub, mais implique la création d'un fork privé spécial, appelé " avis de sécurité du mainteneur ".
Comme mentionné dans les réponses précédentes, les deux ont presque le même objectif. Personnellement, j'aime git rebase et merge request (comme dans gitlab). Cela soulage le réviseur / mainteneur, en s'assurant que lors de l'ajout d'une demande de fusion, la branche de fonctionnalité inclut toutes les dernières validations effectuées sur la branche principale après la création de la branche de fonctionnalité. Voici un article très utile expliquant le rebase en détail: https://git-scm.com/book/en/v2/Git-Branching-Rebasing