git verwerfe alle Änderungen und ziehe von stromaufwärts
144
Wie hole ich ein Upstream-Repo und lasse es den Master ersetzen? Ich habe nur einen Zweig in meinem Repo, nämlich Master, und ich habe ihn komplett durcheinander gebracht, daher muss ich grundsätzlich von oben beginnen. Ich denke, init wird den Job machen, aber gibt es einen einfacheren Weg?
Hier können Sie (mindestens) zwei Dinge tun: Sie können das Remote-Repo neu klonen oder Sie können reset --hard zum gemeinsamen Vorfahren und dann einen Pull , der schnell zum neuesten Commit auf dem Remote-Master .
Um konkret zu sein, hier eine einfache Erweiterung von Nevik Rehnels ursprünglicher Antwort:
HINWEIS : Mit using git reset --hardwerden alle nicht festgeschriebenen Änderungen verworfen, und es kann leicht sein, sich mit diesem Befehl zu verwechseln, wenn Sie neu in git sind. Vergewissern Sie sich daher, dass Sie wissen, was zu tun ist, bevor Sie fortfahren.
Mehr Hilfe für die Neulinge da draußen: git gcräumt auf und läuft durch die Hauswirtschaft. In einem anderen Punkt bin ich nie gelaufen git gc. Es ist schön zu laufen, wird aber nicht benötigt.
Joshua Dance
@ JoshuaDance - guter Punkt. Ich bin mir nicht sicher, warum ich es ursprünglich aufgenommen habe.
Eric Walker
23
während auf Zweigstelle Master:
git reset --hard origin/master
dann mach ein paar Aufräumarbeiten mit git gc(mehr dazu in den Manpages)
Update: Sie müssen wahrscheinlich auch eine ausführen git fetch origin(oder git fetch origin masterwenn Sie nur diesen Zweig möchten); Es sollte keine Rolle spielen, ob Sie dies vor oder nach dem Zurücksetzen tun. (Danke @ eric-walker)
git reset <hash> # you need to know the last good hash, so you can remove all your local commits
git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f
voila, jetzt ist deine Gabel wieder so wie stromaufwärts.
git gc
räumt auf und läuft durch die Hauswirtschaft. In einem anderen Punkt bin ich nie gelaufengit gc
. Es ist schön zu laufen, wird aber nicht benötigt.während auf Zweigstelle Master:
git reset --hard origin/master
dann mach ein paar Aufräumarbeiten mit
git gc
(mehr dazu in den Manpages)Update: Sie müssen wahrscheinlich auch eine ausführen
git fetch origin
(odergit fetch origin master
wenn Sie nur diesen Zweig möchten); Es sollte keine Rolle spielen, ob Sie dies vor oder nach dem Zurücksetzen tun. (Danke @ eric-walker)quelle
reset --hard
.Sie können dies mit einem einzigen Befehl tun:
Oder in zwei Befehlen:
Beachten Sie, dass Sie ALLE Ihre lokalen Änderungen verlieren werden
quelle
voila, jetzt ist deine Gabel wieder so wie stromaufwärts.
quelle