Zurückkehren zur Dateiversion des Hauptzweigs des Ursprungs


425

Ich bin im Hauptzweig meines lokalen Computers eines geklonten Hauptzweigs eines Repos von einem Remote-Server.

Ich habe eine Datei aktualisiert und möchte vom Remote-Master-Zweig auf die ursprüngliche Version zurückgreifen.

Wie kann ich das machen?

Antworten:


873

Angenommen, Sie haben die Datei nicht festgeschrieben oder dem Index hinzugefügt, dann:

git checkout -- filename

Angenommen, Sie haben es dem Index hinzugefügt, es aber nicht festgeschrieben, dann:

git reset HEAD filename
git checkout -- filename

Angenommen, Sie haben es begangen, dann:

git checkout origin/master filename

Angenommen, Sie möchten alle Commits aus Ihrer Branche wegblasen (SEHR ZERSTÖREND):

git reset --hard origin/master

43
Ihre dritte Option unterscheidet sich stark von Ihren ersten beiden Optionen darin, dass sie alle Dateien und nicht nur die eine Datei berührt. Sie können dies expliziter hervorheben. Warum auch nicht empfehlen git checkout HEAD filenameund git checkout origin/master filenamefür die Optionen eins und zwei wäre es konsistenter?
CB Bailey

5
@ CharlesBailey: Ich habe die git checkout origin/master filenameOption zu Gahooas Antwort hinzugefügt .
Frank

2
@cilphex es bläst alle Commits in Ihrem aktuellen Zweig
weg

1
Ich habe Zweig A versehentlich von Zweig B entfernt und musste zurücksetzen, um den lokalen Zweig zu beherrschen. git reset --hard masterAllein war meine Lösung, da ich nicht nach Herkunft greifen wollte. Vielen Dank.
Taco

3
@gahooa Es sollte wahrscheinlich git checkout sein - Dateiname. Wenn die Datei "master" heißt, erhalten Sie ein Verhalten, das nicht beabsichtigt war.
user2602152

50

Ich hatte das gleiche Problem und bin auf diesen Thread gestoßen, aber mein Problem war mit upstream. Unten git Befehl hat bei mir funktioniert.

Syntax

Git Checkout {Remote-Name} / {Zweig} - {Datei / Pfad.js}

Beispiel

Git Checkout Upstream / Develop - Public / Js / Index.js


0

Wenn Sie es noch nicht an die Hauptniederlassung übergeben haben, ist es einfach:

  • Verlasse die Hauptniederlassung (wie git checkout -b oops/fluke/dang)
  • Übernehmen Sie Ihre Änderungen dort (wie git add -u; git commit;)
  • gehe zurück zum Hauptzweig (wie git checkout master)

Ihre Änderungen werden in Branch Oops / Fluke / Dang gespeichert. Meister wird sein wie es war.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.