Ist es besser, eine Pull-Anforderung zu starten oder ein lokales Merge-Commit für den Master durchzuführen?

12

Ich benutze GitHub schon seit einiger Zeit und habe normalerweise meine Feature-Zweige gepusht und dann eine Pull-Anfrage gestartet, die ich selbst zusammengeführt habe. Ich fand, dass es mir half, den Überblick darüber zu behalten, wo ich Zweige zusammengelegt habe.

Aber in letzter Zeit habe ich immer mehr darüber gelesen, wie Git funktioniert, und mir wurde klar, dass ich die Merge-Commits verwenden kann, um auf das Zusammenführen von Zweigen zu verweisen.

Was kann ich also tun, wenn ich einen Feature-Zweig mit dem Master zusammenführe:
Führen Sie ein Merge-Commit für den Master durch und übertragen Sie ihn dann in den Upstream ODER drücken Sie den lokalen Zweig und starten Sie eine Pull-Anforderung?

Ich habe Einführung in Pull-Anfragen für ein 2-Personen-Team gelesen - meine eigenen Anfragen zusammenführen? und Was ist die Arbeit fließt mit 2 Personen an einem Projekt und soll mich offen Pull - Anforderungen von einem Zweig auf der offiziellen Repo oder meine Gabel? aber keiner von ihnen scheint zu antworten, wonach ich suche.

Ashhar Hasan
quelle
2
Was genau fehlt Ihrer Meinung nach an diesen Antworten?
RubberDuck
Der erste spricht darüber aus dem Sinne, dass Pull-Anfragen Peer-Review sein sollen. Der zweite bietet einen Workflow. Der dritte ist nicht einmal verwandt.
Ashhar Hasan
1
Ich betrachte dies aus der Sicht von Best Practices oder wie man eine gute Git-Geschichte aufrechterhält .
Ashhar Hasan
1
Wenn ich eine PR zusammenführe, füge ich dazu den Zweig lokal zusammen. Auf diese Weise kann ich sicherstellen, dass die Zusammenführung sauber angewendet wird, und Tests erneut ausführen, bevor ich das Ergebnis veröffentliche. GitHubs Pull Requests sind nur eine Formalisierung dieses Workflows. Git selbst hat kein PR-Konzept.
Amon
2
Wenn ein PR zusammengeführt wird, führt dies zu einem Zusammenführungs-Commit für den Master. Ich denke also, dass dies keinen Unterschied zum Git-Verlauf macht. Daher glaube ich nicht, dass es einen Grund gibt, den einen oder anderen zu verwenden, abgesehen von Ihrer persönlichen Präferenz zwischen der Befehlszeile und der Github-Benutzeroberfläche.
Ixrec

Antworten:

14

Git-Merge-Mechanismus:
Wenn Sie git merge featurewhile on Master verwenden, wird der Zweig featuremit dem Git-Verlauf zusammengeführtmaster und ein merge-commit(wenn der Zweig nicht schnell vorgespult werden kann) im Git-Verlauf erstellt. merge-commitVerwenden Sie die --no-ffOption mit, um ein Wesen zu erzwingen merge.

Pull-Request-Mechanismus zusammenführen:
Wenn wir eine Pull-Request auf GitHub starten, wird ein Ort erstellt, an GitHub Issuedem Benutzer über die Commits in der PR sprechen und diese diskutieren können, bevor sie zusammengeführt werden. Wenn ein PR auf GitHub zusammengeführt wird, geschieht genau das Gleiche wie git merge feature.

Was soll ich machen?
Was die Geschichte betrifft, gibt es keinen Unterschied zwischen den beiden.
Und was den Beitrag betrifft, müssen Ihre Mitwirkenden in beiden Situationen nichts anderes tun. Sie sind die gleichen (abzüglich des netten kleinen Chats).

Best Practices:
Und ich konnte keine Best Practices finden, aber die Logik besagt, dass PRs nicht sehr hilfreich sind, wenn sich nur eine einzige Person im Repository befindet.

@lxrec und @amon haben mir geholfen, zu diesem Schluss zu kommen.

Ashhar Hasan
quelle
4
Tipp: git mergeMöglicherweise wird kein Zusammenführungs-Commit aufgezeichnet, wenn ein schneller Vorlauf durchgeführt werden kann. Um ein Zusammenführungs-Commit zu erzwingen, können Sie die --no-ffOption hinzufügen .
Amon
Ich ziehe es vor, git-merge auf lokalem zu machen, anstatt es auf githuib.com zu tun. Wenn ich auf github.com etwas Ähnliches tun müsste, würde ich es vorziehen, nicht direkt auf dem Hauptzweig zu arbeiten, würde ich lieber einen Nicht-Hauptzweig nehmen, der dies zuerst kann Stellen Sie den Staging-Modus ein, bevor Sie ihn für die Produktion verfügbar machen.
Ciasto Piekarz
5

Wie Ashhar sagte, gibt es technisch und historisch keinen Unterschied. Bei Projekten mit einem kleinen Team bevorzuge ich die direkte Zusammenführung anstelle des zusätzlichen Schritts der Erstellung einer PR. Wenn jedoch eine Funktion überprüft / Feedback benötigt wird oder wenn es sich um eine WIP handelt und mehr als eine Person daran arbeitet, neige ich dazu, eine PR zu öffnen und der PR-Beschreibung eine Liste von Aufgaben hinzuzufügen.

Beachten Sie, dass git mergemöglicherweise der Schnellvorlauf verwendet wird, wenn keine Änderungen am Master vorgenommen wurden. Daher möchten Sie diesen möglicherweise verwenden git merge --no-ff. Ich neige dazu nicht.

Verwenden Sie daher zusammenfassend nur PRs, wenn Sie eine Diskussion benötigen. Ansonsten einfach direkt zusammenführen.

Louay Alakkad
quelle
1
Erwähnenswert ist auch, dass die Diskussion und das Feedback zu einer Pull-Anfrage sowohl von automatisierten Quellen als auch von Teammitgliedern stammen können. Wenn Sie einen CI-Server eingerichtet haben, kann dieser Build- und Testergebnisse liefern, sodass Sie niemals etwas zusammenführen, das den Build-on-Master unterbricht.
Eric