2016-07-28 29 views
6

ich eine Github-Repository gegabelt habe, einen commit (Titel Some small changes) vorgelegt bekam eine Pull-Anforderung und in den Haupt-Repository zusammengeführt (Commit Titel Some small changes (#12), wo #12 die Pull-Request-Nummer). So weit, ist es gut.Github: Clean up Gabel nach Pull-Anforderung

Jetzt, wenn ich meine Gabel aktualisieren möchte (git rebase upstream/master, siehe here), habe ich dieses Commit zweimal in meinem Repository. Zuerst als Some small changes und dann wieder als Some small changes (#12). Wenn ich eine neue Pull-Anforderung erstelle, wird die Anforderung Some small changes erneut zur Pull-Anforderung hinzugefügt.

Es gibt zwei Möglichkeiten, um dieses Problem zu umgehen:

  1. Abgleich meine Gabel, siehe this answer
  2. Merge in einer Person verpflichtet, siehe this answer

beiden Fällen handelt es Umschreiben meine Geschichte und zwingen müssen. Gibt es eine bessere Möglichkeit, Ihre Gabel synchron zu halten, während Sie Pull-Requests ausführen?

Antwort

5

Ja. Ich nehme an, es gibt ein paar Möglichkeiten, dies zu tun, aber hier ist, was ich tue.

So möchten Sie zu einem Repository auf GitHub beitragen, können wir dies upstream nennen.

Auf github würden Sie das Repository upstream verzweigen. Lass uns das origin nennen.

Dann auf Ihrer Entwicklungsmaschine würden Sie origin klonen, damit Sie an dem Code arbeiten können. Lass uns dies local nennen. Wenn Sie dieses Repository klonen, haben Sie sehr wahrscheinlich bereits origin als Remote-Repository eingerichtet. Sie müssen außerdem das Repository upstream als Remote-Repository hinzufügen.

Wenn Sie eine Änderung vornehmen möchten, nehmen Sie diese Änderung nicht an der Verzweigung master vor. Erstellen Sie stattdessen einen neuen Zweig für Ihre Änderungen. d. h. fix-issue-101

Sobald Sie mit den Änderungen, die Sie vorgenommen haben, zufrieden sind, sollten Sie Ihre Änderungen aus dem local-Repository in das origin-Repository übertragen. Sie können jetzt eine Pull-Anforderung unter upstream vom Zweig fix-issue-101 unter origin zum Zweig master unter upstream erstellen.

Sie können fortfahren, Zweigstellen unter local und origin zu erstellen, während Sie auf die Annahme der Pull-Anforderung warten und somit zusätzliche Pull-Anforderungen erstellen.

Wenn master auf upstream Änderungen hat, das heißt Ihre Pull-Request angenommen wurde, können Sie von master auf upstream-master auf local ziehen würde. Dann drücken Sie master auf local zu master auf origin. Danach werden die master Zweige aller Repositories wieder synchronisiert.

Ich hoffe, ich habe dies in einem verständlichen Manor geschrieben. Wenn Sie nicht zögern, Fragen zu stellen, werde ich mich entsprechend informieren.

+0

Vielen Dank, die Antwort ist ziemlich klar und ein viel besserer Ansatz als der, den ich vorher benutzt habe. –

+0

Dies ist eine großartige Antwort, klar und setzt keine Kenntnis der Herkunft und der lokalen Terminologie voraus. – Fernando

+0

Außerdem können Sie mit GitHub den Remote-Zweig mit einem Klick löschen, sobald die Pull-Anforderung zusammengeführt wurde. Die Schaltfläche "Zweig löschen" wird am Ende der Pull Request-Seite angezeigt, sobald sie zusammengeführt wurde. –