Zurücksetzen des Hauptzweigs auf den Upstream

145

Ich habe ein Git-Repository gegabelt und Upstream eingerichtet. Ich habe einige Änderungen im Master-Zweig vorgenommen und mich verpflichtet und mich an Github gewandt.

Was soll ich nun tun, um alle meine Änderungen in der Hauptniederlassung aufzugeben und sie mit der Hauptniederlassung des Upstreams identisch zu machen?

Gelin Luo
quelle

Antworten:

277

(Ich gehe davon aus, dass sich die Änderungen, die Sie jetzt ignorieren möchten, auf Ihrer originFernbedienung befinden, Sie sich in Ihrem masterZweig befinden und zum Inhalt von zurückkehren möchtenupstream Fernbedienung )

Setzen Sie zunächst Ihre Arbeitskopie auf den Upstream-Master zurück:

git remote update
# the double hyphen ensures that upstream/master is
# considered as a revision and not confused as a path
git reset --hard upstream/master --

Schieben Sie dann diesen neuen Verzweigungskopf in Ihr Ursprungs-Repository und ignorieren Sie die Tatsache, dass es sich nicht um einen schnellen Vorlauf handelt:

git push origin +master
Nickgrim
quelle
14
Möglicherweise muss es auch ausgeführt werden, git remote add upstream <upstream_repo_url>wenn Sie den Zweig mit GitHub gegabelt haben.
Kato
3
Was bedeutet das +in git push origin +master? Ist es das gleiche wie gerade git push origin master?
bluenote10
4
@ bluenote10 Sie sind nicht gleich. Das +ist es, was git sagt, "die Tatsache zu ignorieren, dass es kein schneller Vorlauf sein wird". Es ist ein bisschen wie ein git push --force, aber es gilt nur für diesen bestimmten Ref.
Nickgrim
1
Hat bei mir nicht funktioniert. Ich habe einen Git-Status erstellt, nachdem Elemente geändert wurden. Ich muss abwischen und von vorne anfangen. Git ist extrem schwer zu verstehen.
Mitch
1
@mehmet Nein, es ändert nur den Zweig, in dem Sie sich befinden.
John