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
:)
Antworten:
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:
fix
Zweig (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 diesmaster
der Zweig war, in den Ihr Fix integriert wurde: Die Zusammenführung erfolgt im Schnellvorlauf): Derzeit ist keine erneute Basis erforderlich.master
(jetzt mit dem neuesten vonupstream 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( Da
upstream
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
upstream
Repo).Siehe beispielsweise " Workflow zum Verwalten von Pull-Anforderungen für gemeinsam genutzte Repos in Github ".
Mit anderen Worten,
upstream
kann 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 sindupstream
.Das OP Santosh Kumar fragt in den Kommentaren :
Wenn Sie seit Ihrer letzten Pull-Anforderung keine neuen Korrekturen vorgenommen haben, siehe oben (löschen und erstellen Sie einen neuen Zweig zusätzlich
fix
zu Ihrem aktualisierten Zweigmaster
).Wenn Sie seit Ihrer Pull-Anfrage mehr Arbeit geleistet haben, würde ich nicht zusammenführen,
upstream
wenn ich eine neue Pull-Anfrage stellen möchte: Ich würde ziehen und neu gründen :Auf diese Weise wird meine gesamte neue lokale Arbeit zusätzlich zu den letzten
upstream
master
Commits (in meinem lokalen Repo abgerufen) wiedergegeben, vorausgesetzt, diesmaster
ist der Zielzweig, der meine zukünftige Pull-Anforderung integriert.Dann kann ich meine lokale Arbeit auf '
origin
' verschieben, was meine Gabelung auf GitHub von istupstream
.Und von meinem Fork auf GitHub aus kann ich sicher eine Pull-Anfrage stellen, da ich weiß, dass nur neue Commits hinzugefügt werden,
upstream
ohne dass eine Zusammenführungsauflösung erforderlich ist. Das Zusammenführen dieser neuen Commits imupstream
Repo bedeutet eine einfache Zusammenführung im Schnellvorlauf.A
git pull --rebase
ohne Angabe des Zweigs, auf dem Sie Ihren (derzeit ausgecheckten)fix
Zweig neu gründen möchten, würde nicht funktionieren:Ja, Sie können den Zweig angeben, der das Ziel der Pull-Anforderung sein soll, z. B. '
master
'.Dadurch wird Ihr
fix
Zweig nicht gelöscht , sondern zusätzlich zu demmaster
in Ihrem Repo abgerufenen Upstream wiedergegeben .quelle
You asked to pull from the remote 'upstream', but did not specify a branch.
Soll ichmaster
endlich anhängen ? Und was wird das tun? Wird mein Fix- Zweig gelöscht ?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.
quelle