Antworten:
Die "Merge Request" -Funktion von GitLab entspricht der "Pull Request" -Funktion von GitHub . Beides ist eine Möglichkeit, Änderungen aus einem anderen Zweig oder Zweig in Ihren Zweig zu ziehen und die Änderungen mit Ihrem vorhandenen Code zusammenzuführen. Sie sind nützliche Tools für die Codeüberprüfung und das Änderungsmanagement.
In einem Artikel von GitLab werden die Unterschiede bei der Benennung der Funktion erläutert:
Zusammenführungs- oder Pull-Anforderungen werden in einer Git-Verwaltungsanwendung erstellt und fordern eine zugewiesene Person auf, zwei Zweige zusammenzuführen. Tools wie GitHub und Bitbucket wählen die Namensabrufanforderung aus, da die erste manuelle Aktion darin besteht, den Feature-Zweig abzurufen. Tools wie GitLab und Gitorious wählen die Namenszusammenführungsanforderung aus, da dies die letzte Aktion ist, die vom Empfänger angefordert wird. In diesem Artikel werden sie als Zusammenführungsanforderungen bezeichnet.
Eine "Zusammenführungsanforderung" sollte nicht mit dem git merge
Befehl verwechselt werden . Eine "Pull-Anfrage" sollte auch nicht mit dem git pull
Befehl verwechselt werden . Beide git
Befehle werden hinter den Kulissen sowohl in Pull-Anforderungen als auch in Zusammenführungsanforderungen verwendet. Eine Zusammenführungs- / Pull-Anforderung bezieht sich jedoch auf ein viel umfassenderes Thema als nur diese beiden Befehle.
Sie sind das gleiche Merkmal
Zusammenführungs- oder Pull-Anforderungen werden in einer Git-Verwaltungsanwendung erstellt und fordern eine zugewiesene Person auf, zwei Zweige zusammenzuführen. Tools wie GitHub und Bitbucket wählen die Namensabrufanforderung aus, da die erste manuelle Aktion darin besteht, den Feature-Zweig abzurufen. Tools wie GitLab und Gitorious wählen die Namenszusammenführungsanforderung aus, da dies die letzte Aktion ist, die vom Empfänger angefordert wird. In diesem Artikel werden sie als Zusammenführungsanforderungen bezeichnet.
Aus meiner Sicht bedeuten sie dieselbe Aktivität, jedoch aus unterschiedlichen Perspektiven:
Denken Sie darüber nach, Alice macht einige Commits für Repository A, das aus Bobs Repository B gegabelt wurde.
Wenn Alice ihre Änderungen in B "zusammenführen" möchte, möchte sie tatsächlich, dass Bob diese Änderungen aus A "zieht".
Aus Alices Sicht handelt es sich daher um eine "Zusammenführungsanforderung", während Bob sie als "Pull-Anforderung" betrachtet.
In Bezug auf das Konfliktmanagement gibt es einen subtilen Unterschied. Im Falle von Konflikten führt eine Pull-Anforderung in Github zu einem Zusammenführungs-Commit für den Zielzweig . In Gitlab, wenn ein Konflikt gefunden wird, haben die Änderungen an einem merge commit auf dem seine Quelle Zweig.
Siehe https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html
"GitLab löst Konflikte, indem im Quellzweig ein Zusammenführungs-Commit erstellt wird, das nicht automatisch mit dem Zielzweig zusammengeführt wird. Auf diese Weise kann das Zusammenführungs-Commit überprüft und getestet werden, bevor die Änderungen zusammengeführt werden, wodurch verhindert wird, dass unbeabsichtigte Änderungen ohne Überprüfung oder Unterbrechung in den Zielzweig gelangen." der Build. "
GitLab 12.1 (Juli 2019) führt einen Unterschied ein:
" Zusammenführungsanfragen für vertrauliche Probleme "
Bei der Erörterung, Planung und Lösung vertraulicher Probleme wie Sicherheitslücken kann es für Open Source-Projekte besonders schwierig sein, effizient zu bleiben, da das Git-Repository öffentlich ist.
Ab 12.1 können vertrauliche Probleme in einem öffentlichen Projekt jetzt in einem optimierten Workflow mithilfe der Schaltfläche "Vertrauliche Zusammenführungsanforderung erstellen" gelöst werden, mit der Sie eine Zusammenführungsanforderung in einem privaten Zweig des Projekts erstellen können.
Siehe " Vertrauliche Probleme " ab Ausgabe 58583 .
Eine ähnliche Funktion gibt es in GitHub, aber es wird ein spezieller privater Fork erstellt, der als " Sicherheitshinweis für Betreuer " bezeichnet wird.
Wie bereits in früheren Antworten erwähnt, dienen beide fast demselben Zweck. Persönlich mag ich Git Rebase und Merge Request (wie in Gitlab). Dies entlastet den Prüfer / Betreuer und stellt sicher, dass der Feature-Zweig beim Hinzufügen einer Zusammenführungsanforderung alle neuesten Commits enthält, die im Hauptzweig ausgeführt wurden, nachdem der Feature-Zweig erstellt wurde. Hier ist ein sehr nützlicher Artikel, der die Rebase ausführlich erklärt: https://git-scm.com/book/en/v2/Git-Branching-Rebasing