Wie kann ich eine Datei auf eine bestimmte Revision zurücksetzen oder wiederherstellen?

Lesezeit: 5 Minuten

1646893687 230 Wie kann ich eine Datei auf eine bestimmte Revision zurucksetzen
Hasst_

Ich habe einige Änderungen an einer Datei vorgenommen, die einige Male als Teil einer Gruppe von Dateien festgeschrieben wurde, aber jetzt möchte ich die Änderungen auf eine frühere Version zurücksetzen/zurücksetzen.

Ich habe eine gemacht git log zusammen mit A git diff um die Revision zu finden, die ich brauche, aber ich habe einfach keine Ahnung, wie ich die Datei in ihren früheren Zustand zurückversetzen kann.

  • Nach dem Zurücksetzen nicht vergessen --cached beim prüfen git diff. Verknüpfung

    – Geoffrey Hale

    2. Dezember 2015 um 19:20 Uhr


  • Ich habe deine Frage gefunden, als ich meine gegoogelt habe. Aber nachdem ich die Lösung gelesen hatte, überprüfte ich mein Protokoll und fand heraus, dass ich die Änderungen als eigenständiges Commit vorgenommen hatte, also machte ich git revert für dieses Commit, und alles andere blieb so, wie ich es wollte. Keine Lösung, nur eine andere Möglichkeit, es manchmal zu tun.

    – sudo97

    8. August 2017 um 14:08 Uhr

  • Ich verwende diese manuelle Lösung: $ git revert , entstash dann die gewünschten Änderungen und lade dann diese gewünschten Änderungen in einen neuen Commit hoch.

    – Absicht

    14. Juli 2021 um 18:19 Uhr

Sie können die an einer Datei vorgenommenen Änderungen mit dem Befehl diff schnell überprüfen:

git diff <commit hash> <filename>

Um dann eine bestimmte Datei auf diesen Commit zurückzusetzen, verwenden Sie den Reset-Befehl:

git reset <commit hash> <filename>

Möglicherweise müssen Sie die verwenden --hard Option, wenn Sie lokale Änderungen haben.

Ein guter Arbeitsablauf zum Verwalten von Wegpunkten besteht darin, Tags zu verwenden, um Punkte in Ihrer Zeitachse sauber zu markieren. Ich kann Ihren letzten Satz nicht ganz verstehen, aber was Sie vielleicht wollen, ist, einen Zweig von einem früheren Zeitpunkt abzuzweigen. Verwenden Sie dazu den praktischen Checkout-Befehl:

git checkout <commit hash>
git checkout -b <new branch name>

Sie können dies dann mit Ihrer Hauptlinie rebasieren, wenn Sie bereit sind, diese Änderungen zusammenzuführen:

git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>

  • Der Befehl ‘git checkout ‘ hat mir meine ältere Version des Projekts zurückgegeben, genau das, wonach ich gesucht habe. Danke, Chris.

    – vidur punj

    27. Januar 2013 um 9:26 Uhr


  • Um die Datei zurückzusetzen git checkout <commit hash> <filename> funktionierte besser für mich als git reset

    – Motti Strom

    7. März 2013 um 16:53 Uhr


  • Ich wollte eine frühe Version einer einzelnen Datei, weil ich 150 Zeilen mit einem schlecht gewählten Copy/Paste überschrieben hatte. git checkout <commit hash> <filename> hat bei mir funktioniert. Dies sollte meiner Meinung nach nicht die akzeptierte Antwort sein. git reset nicht.

    – Harperville

    27. Februar 2014 um 20:58 Uhr

  • Kann ich nicht benutzen git reset Um eine einzelne Datei zurückzusetzen, erhalten Sie eine Fehlermeldung fatal: Cannot do hard reset with paths

    – schleichender

    23. Dezember 2014 um 17:11 Uhr


  • Was Slier sagte: Sie können nicht git reset --hard <commit hash> <filename>. Dies wird Fehler mit fatal: Cannot do hard reset with paths. Was Motti Strom sagte: verwenden git checkout <commit hash> <filename>

    – Hawkeye Parker

    6. Februar 2015 um 5:36 Uhr

1646893687 97 Wie kann ich eine Datei auf eine bestimmte Revision zurucksetzen
Greg Hewgill

git checkout -- foo

Das wird zurückgesetzt foo zu KOPF. Du kannst auch:

git checkout HEAD^ foo

für eine Überarbeitung zurück usw.

  • Was ist der Unterschied zwischen dieser Antwort, die hat --und die akzeptierte, die nicht?

    – 2rs2ts

    9. Oktober 2014 um 0:20 Uhr

  • In Git teilt ein ‘ — ‘ vor der Dateiliste Git mit, dass alle nächsten Argumente als Dateinamen interpretiert werden sollen, nicht als Zweignamen oder irgendetwas anderes. Es ist manchmal ein hilfreicher Disambiguator.

    – Foxxtrott

    9. Oktober 2014 um 14:32 Uhr

  • Das ‘–‘ ist nicht nur eine Git-Konvention, sondern etwas, das Sie an verschiedenen Stellen in der *nix-Befehlszeile finden. rm -- -f (Entfernen Sie eine Datei namens -f) scheint das kanonische Beispiel zu sein. Mehr Details hier

    – Hawkeye Parker

    6. Februar 2015 um 5:49 Uhr

  • Fügen Sie einfach hinzu, was @HawkeyeParker gesagt hat: rm Der Befehl verwendet getopt(3), um seine Argumente zu parsen. getopt ist der Befehl zum Analysieren von Befehlsargumenten. gnu.org/software/libc/manual/html_node/Getopt.html

    – Devy

    14. Juli 2015 um 18:11 Uhr

  • @Honey Ja, das meine ich, und ja, wahrscheinlich überhaupt nicht üblich. Ich habe dieses Beispiel an verschiedenen Stellen gesehen, vielleicht nur, um es einprägsam zu machen: rm -f ist bekannt dafür, beängstigend/gefährlich zu sein. Aber, der Punkt ist, in *nix ein Dateiname kann Beginnen Sie mit einem ‘-‘, und dies wird verschiedene Befehlszeileninterpreter verwirren, die, wenn sie ein ‘-‘ sehen, erwarten, dass eine Befehlsoption folgt. Es kann jede Datei sein, die mit ‘-‘ beginnt; zB “-mySpecialFile”.

    – Hawkeye Parker

    5. April 2017 um 20:35 Uhr

Und um zur letzten festgeschriebenen Version zurückzukehren, was am häufigsten benötigt wird, können Sie diesen einfacheren Befehl verwenden.

git checkout HEAD file/to/restore

  • Was ist der Unterschied zwischen diesem (git checkout HEAD file/to/restore) und git reset –hard file/to/restore ???

    – Motti Schoner

    26. Januar 2016 um 13:23 Uhr

  • 1) einfacher zu merken, allgemeinerer Weg 2) keine Sorge, die Eingabetaste zu drücken, bevor Sie den Dateinamen eingeben

    – Roman Susi

    10. Januar 2017 um 19:03 Uhr

1646893687 322 Wie kann ich eine Datei auf eine bestimmte Revision zurucksetzen
Gemeinschaft

Ich hatte gerade das gleiche Problem und fand diese Antwort am einfachsten zu verstehen (commit-ref ist der SHA-Wert der Änderung im Protokoll, zu dem Sie zurückkehren möchten):

git checkout [commit-ref] [filename]

Dadurch wird diese alte Version in Ihrem Arbeitsverzeichnis abgelegt und Sie können sie von dort aus übertragen, wenn Sie möchten.

  • Was ist der Unterschied zwischen diesem (git checkout HEAD file/to/restore) und git reset –hard file/to/restore ???

    – Motti Schoner

    26. Januar 2016 um 13:23 Uhr

  • 1) einfacher zu merken, allgemeinerer Weg 2) keine Sorge, die Eingabetaste zu drücken, bevor Sie den Dateinamen eingeben

    – Roman Susi

    10. Januar 2017 um 19:03 Uhr

1646893688 444 Wie kann ich eine Datei auf eine bestimmte Revision zurucksetzen
Chim

Wenn Sie wissen, wie viele Commits Sie zurückgehen müssen, können Sie Folgendes verwenden:

git checkout master~5 image.png

Dies setzt voraus, dass Sie sich auf dem befinden master Branch, und die gewünschte Version ist 5 Commits zurück.

986630cookie-checkWie kann ich eine Datei auf eine bestimmte Revision zurücksetzen oder wiederherstellen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy