2013-11-09 10 views
10

Ich habe ein Github-Projekt gespalten, dann lokal geklont.Git - Update Gabel Master & Rebase meinen Zweig darauf?

Ich machte dann einige Änderungen in einem neuen Zweig auf my_github/the_project Repo.

Ich habe dann die Änderungen hinzugefügt und festgeschrieben und zu meinem Github Repo geschoben und eine Pull-Anfrage gesendet.

Der Besitzer hat meine Anfrage erhalten und möchte, dass ich "Rebase auf Master", um die neuesten Änderungen zu erhalten. Wie mache ich das?

Ursprünglich dachte ich, ich könnte nur git fetch und rebase master aus meiner aktuellen Zweigstelle (wie die meisten Beiträge, die ich gefunden berate ...), aber git fetch tat nichts. Jetzt habe ich erkannt, dass es wahrscheinlich ist, weil ich immer noch von my_ github/repo klonen (es ist mein Name in den Fernbedienungen schließlich), die noch nicht die neuen Änderungen in Master vom Github-Quellenbesitzer hat.

Ich denke, was ich wahrscheinlich tun müssen, um „refresh“ meine Gabel, so dass Master meiner Gabel ist up-to-date und dann ich das Master holen kann und dann zu diesem Master rebase auf?

Wenn dies der Fall ist, wie kann ich diese Aktualisierung meines Gabels Master tun? Wenn nicht wie sonst?

Sollte ich ein Remote für das ursprüngliche Upstream-Repository hinzufügen und dieses zum (lokalen) Rebase verwenden? Ist das die bevorzugte Methode?

Antwort

10

Ja, es holt nichts aus dem Grund, den Sie vermutet haben. Und ja, Sie sollten lokal eine Remote für Upstream hinzufügen; Es wird eine Schnellvorlauf-Zusammenführung auf Master durchgeführt. Ich

git checkout master # Make sure you are in master 
git remote add author original_repo_that_you_forked_from 
    # Note: This is in the format [email protected]:authors_name/repo_name.git 
    #  Only needs definition once, future fetches then use it. 
git fetch author 
git status # make sure you are in the master branch for the following merge 
git merge author/master # i.e. 'into' your master branch 
git checkout your-branch 
git rebase master  # Now get those changes into your branch. 
git push origin your_branch # You can also use `-f` if necessary and `--all` 

(sorry, ich könnte die Syntax genau richtig nicht haben)

+0

Sie können die Fernbedienung in der Push, wie 'git push origin --all' angeben möchten, aber sonst, was das ist genau würde vorschlagen. – Leigh

+0

Von diesem Github [Rebase und Merge Blog] (https://github.com/blog/2243-rebase-and-merge-pull-requests), können wir sagen, dass, selbst wenn der Kontributor die Änderung nicht rebasiert hat, sollte es ist es sehr praktisch für den _author_, um Rebase und Merge? Wenn das der Fall ist, verstehe ich nicht, warum eine PR angehalten wird, weil sie nicht rebasiert wird. – Felix

+0

Denn wenn es Konflikte gibt, wird der Betreuer nicht unbedingt wissen, wie sie zu beheben sind. Der Autor ist am besten in der Lage, sie zu beheben. –