2012-06-16 7 views
29

Hier ist das Szenario:Wie können Sie einem github-Pull-Request einer anderen Person zu Ihrem Repo Commits hinzufügen, wenn Sie sich nicht an ihren Zweig binden können?

Ich habe eine öffentliche Repo A. Bob Gabeln A, fügt einige Commits zu Bob/master hinzu und übermittelt eine Pull-Anforderung, um diese Änderungen in A/master zusammenzuführen. Ich möchte einige Änderungen an der vorgeschlagenen Pull-Anforderung vornehmen, bevor ich sie wieder zu A/master zusammenfasse.

Wie kann ich das tun, wenn ich nicht auf Bob/master drücken kann?

Antwort

16

Es gibt eine Reihe von Workflows, die Sie hier verwenden können. Einige Beispiele sind:

  1. Kommentieren Sie die Pull-Anfrage, und lassen Sie Bob einige Änderungen vornehmen. Weitere Informationen finden Sie unter Pull Request Discussion.

  2. Verbinden Sie die Pull-Anforderung auf eine andere Zweig, dann nehmen Sie Ihre Änderungen vor dem Zusammenführen zu Master. Sie müssen dies über die Befehlszeile ausführen. Eine Schritt-für-Schritt-Anleitung finden Sie unter Merging a Pull Request.

  3. Bearbeiten Sie den Patch vor der Anwendung mit git am. Siehe Patch and Apply. Dies ist wahrscheinlich die flexibelste Option, aber auch die am meisten manuelle.

    git checkout master 
    curl http://github.com/<username>/<project_name>/pull/<patch_number>.patch 
    sensible-editor <patchfile> 
    git am <patchfile> 
    git push origin master 
    
+0

Nein, ideal, aber funktioniert, ich mag besonders Option 1. Mit Option 3, würde ich Kredit für Bobs Engagement akzeptieren, richtig? –

+0

Folgefrage wurde hierher verschoben: http://stackoverflow.com/questions/11066980/w-o-gets-credit-for-hand-edited-patch-file –

+0

Bei komplizierteren Änderungen muss der Patch nicht bearbeitet werden von Hand. Nach dem Anwenden des Patches mit 'git am' können Sie die Repo-Dateien direkt editieren und dann mit dem Flag '--amend' versehen. – Pete

2

Sie können nur von seiner Niederlassung in Ihrem lokalen Repo (nicht im Github gui) ziehen

# make same work-in-progress branch and check it out 
$ git checkout -b WIP 

# pull his changes into WIP 
$ git pull https://github.com/... master 

und dann gnadenlos von dort zu ändern. Die andere Möglichkeit wäre, githubs Kommentarsystem zu verwenden, um ihn dazu zu bringen, sein Patchset zu ändern (auf diese Weise könnte er auch den Kredit nach der Zusammenführung behalten).

+7

Gibt es keine Möglichkeit, dass wir beide einen Kredit behalten können? ein Weg, so dass seine und meine Commits erscheinen unter der Pull-Anfrage ... –

+0

Wenn Sie Commits machen und dann seine Commits verschmelzen, werden nicht alle Commits aus einer Kredit-Perspektive erhalten? – gregturn

+0

@ Gregturn: Wenn Sie eine Commit ändern, wird der Autor geändert, aber bleibt der ursprüngliche Wert, wenn Sie nur ein Commit per Mausklick auswählen. –

2

Eine Lösung ist eine PR in Bob/master mit Ihren Änderungen zu machen. Bob kann Ihre PR in Bob/master zusammenführen; Wenn Sie Bobs PR in A/master zusammenführen, enthält es Bobs Commits und Ihre Commits.

Sie können eine PR von jeder Verzweigung/Verzweigung zu jeder anderen Verzweigung/Verzweigung erstellen. Also, wenn Bob einen PR von Bob/feature übermittelt, erstellen Sie einfach einen PR in Bob/feature.