Meine Pull-Anfrage wurde zusammengeführt. Was ist als Nächstes zu tun?

112

Ich habe kürzlich an einem Projekt von GitHub teilgenommen. Ich habe folgendes gemacht:

Das ursprüngliche Repository wurde gegabelt, auf meinen lokalen Computer geklont, ein Zweig zum Beheben des vorhandenen Fehlers erstellt, der Fehler in diesem Zweig behoben, dieser Zweig in mein Repo verschoben und eine Pull-Anfrage an den Autor des Repositorys gesendet, um meinen Fix- Zweig zusammenzuführen seine Hauptniederlassung.

Es war mein erstes Mal, dass ich mich auf den Code eines anderen festgelegt habe, also weiß ich nicht, was ich tun soll. Jetzt wurde meine Pull-Anfrage vom Autor zum ursprünglichen Repo / Projekt zusammengeführt.

Was soll ich als nächstes tun? Soll ich den Zweig löschen? Soll ich den Zweig zusammenführen? Noch etwas?


Zusätzliche Information:

Das ursprüngliche Projekt hat einen einzigen Zweig.

Ich habe auch ein Upstream-Set, um die neuesten Updates vom ursprünglichen Repo zu erhalten. (Ich habe es so gemacht) :

git remote add upstream https://path/to/original/repo.git

Und ich bekomme solche Updates:

git fetch upstream
Santosh Kumar
quelle
12
Ghehe, du bist nicht der einzige, der Probleme hat: Youtube Video :)
Anne

Antworten:

65

Was als nächstes zu tun ist, ist: weiterhin neue Funktionen beizutragen oder andere Fehler in ihren eigenen Zweigen zu beheben (nur auf Ihre Gabel geschoben).

Das heißt, Ihre Gabel bleibt, aber die Zweige in Ihrer Gabel können kommen und gehen.

Sie können die Verzweigung auch entfernen, wenn Sie nicht vorhaben, weitere Beiträge zu leisten. Der entsprechende Eintrag in "Repositorys, zu denen Sie beitragen" wird jedoch entfernt .

Es ist einfacher:

  • Löschen Sie Ihren fixZweig (tatsächlich wird er jetzt für Sie gelöscht ) auf Ihrer Gabel (und in Ihrem lokalen geklonten Repo: siehe " Löschen eines Git-Zweigs sowohl lokal als auch remote ").
  • git pull upstream master(Wenn dies masterder Zweig war, in den Ihr Fix integriert wurde: Die Zusammenführung erfolgt im Schnellvorlauf): Derzeit ist keine erneute Basis erforderlich.
  • Erstellen Sie einen Fix-Zweig über Ihrem aktualisierten lokalen master(jetzt mit dem neuesten von upstream master).

Vergessen Sie jedoch niemals einen Schritt, bevor Sie eine zukünftige Pull-Anfrage senden:

Basen Sie zuerst Ihren aktuellen Zweig ( fix) vom vorgelagerten Zielzweig zurück

( Daupstream es sich um das ursprüngliche Repo handelt, das Sie gegabelt haben: siehe " Was ist der Unterschied zwischen Ursprung und Upstream in Github? ")

Bevor Sie etwas an das ursprüngliche Repo ("Upstream") zurücksenden, müssen Sie sicherstellen, dass Ihre Arbeit auf dem neuesten Stand des ursprünglichen Repos basiert (andernfalls führt die Pull-Anforderung nicht zu einer Schnellvorlauf-Zusammenführung, sobald sie angewendet wurde zurück auf upstreamRepo).
Siehe beispielsweise " Workflow zum Verwalten von Pull-Anforderungen für gemeinsam genutzte Repos in Github ".

Mit anderen Worten, upstreamkann sich weiterentwickeln (neue Commits werden hinzugefügt), während Sie damit beschäftigt sind, Dinge zu reparieren. Sie müssen Ihre Fixes zusätzlich zu den neuesten Arbeiten aus dem Upstream erneut abspielen, um sicherzustellen, dass Ihre Commits weiterhin mit den neuesten kompatibel sind upstream.


Das OP Santosh Kumar fragt in den Kommentaren :

Ich habe gezogen und verschmolzen von upstreamzu Meister, was nun?

Wenn Sie seit Ihrer letzten Pull-Anforderung keine neuen Korrekturen vorgenommen haben, siehe oben (löschen und erstellen Sie einen neuen Zweig zusätzlich fixzu Ihrem aktualisierten Zweig master).

Wenn Sie seit Ihrer Pull-Anfrage mehr Arbeit geleistet haben, würde ich nicht zusammenführen, upstreamwenn ich eine neue Pull-Anfrage stellen möchte: Ich würde ziehen und neu gründen :

git pull --rebase upstream master

Auf diese Weise wird meine gesamte neue lokale Arbeit zusätzlich zu den letzten upstream masterCommits (in meinem lokalen Repo abgerufen) wiedergegeben, vorausgesetzt, dies masterist der Zielzweig, der meine zukünftige Pull-Anforderung integriert.

Dann kann ich meine lokale Arbeit auf ' origin' verschieben, was meine Gabelung auf GitHub von ist upstream.
Und von meinem Fork auf GitHub aus kann ich sicher eine Pull-Anfrage stellen, da ich weiß, dass nur neue Commits hinzugefügt werden, upstreamohne dass eine Zusammenführungsauflösung erforderlich ist. Das Zusammenführen dieser neuen Commits im upstreamRepo bedeutet eine einfache Zusammenführung im Schnellvorlauf.


A git pull --rebaseohne Angabe des Zweigs, auf dem Sie Ihren (derzeit ausgecheckten) fixZweig neu gründen möchten, würde nicht funktionieren:

Das ( git pull --rebase) sagt:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

Soll ich endlich den Master anhängen? Und was wird das tun? Wird es meinen fixZweig löschen ?

Ja, Sie können den Zweig angeben, der das Ziel der Pull-Anforderung sein soll, z. B. ' master'.
Dadurch wird Ihr fixZweig nicht gelöscht , sondern zusätzlich zu dem masterin Ihrem Repo abgerufenen Upstream wiedergegeben .

VonC
quelle
Können Sie die Rebase aus dem Upstream- Teil erklären ?
Santosh Kumar
@SantoshKumar Sie müssen Ihre lokalen Commits über das ursprüngliche Repo (hier als Upstream bezeichnet) zurücksetzen,
VonC
Ja, ich weiß, ich stelle eine grundlegende Frage. Ich habe gezogen und vom Upstream zum Master verschmolzen, was nun?
Santosh Kumar
@ SantoshKumar ist es eine gute Frage. Ich habe die Antwort bearbeitet, um sie zu adressieren. Suchen Sie nach "The OP Santosh Kumar fragt in den Kommentaren: ..."
VonC
Das heißt: You asked to pull from the remote 'upstream', but did not specify a branch.Soll ich masterendlich anhängen ? Und was wird das tun? Wird mein Fix- Zweig gelöscht ?
Santosh Kumar
18

Zunächst herzlichen Glückwunsch zu Ihrem ersten Beitrag zu einem Projekt auf Github.

Der übliche Github-Workflow besteht darin, für jedes gelöste Problem einen neuen Zweig zu erstellen. Auf diese Weise kann der Betreuer des Mainline-Repositorys entscheiden, welche Ihrer Lösungen zusammengeführt und welche abgelehnt werden soll. Nachdem ein Zweig stromaufwärts zusammengeführt wurde, wird der Zweig nicht mehr benötigt und kann normalerweise gelöscht werden.

Philipp
quelle