Ich habe ein altes Commit, das ich vor ein paar Wochen gemacht habe. Ich möchte nur eine einzige Datei aus diesem Commit wiederherstellen. Was mache ich?
git
git-checkout
Varun Achar
quelle
quelle
Antworten:
Dadurch wird HEAD nicht geändert, sondern nur die lokale Datei überschrieben
path/to/file.txt
Siehe man git-rev-parse für mögliche Revisionsspezifikationen dort (natürlich wird ein einfacher Hash (wie
dd9bacb
) gut tun)Vergessen Sie nicht, die Änderung zu übernehmen (nach einer Überprüfung ...)
quelle
revision-specification
da das, was das OP gefragt hat :)shacommit~1
(Beispiel :)git checkout 0f4bbdcd~1 -- path/to/file.txt
, um das Commit unmittelbar zuvor abzurufen.git checkout [Revision_Key] -- path/to/file
.quelle
git checkout
kann einzelne Dateien verarbeiten (siehe Antwort von sehe), kein Kopieren und Einfügen erforderlich.HEAD
,ORIG_HEAD
oder irgendwelche von denen in Kombination mit^
/~
/@
-Stil Notation.Ich musste eine kürzlich in git festgeschriebene Datei wiederherstellen. Um dies zu wiederholen und eine andere Perspektive zu geben, müssen Sie dazu die folgenden zwei Schritte ausführen:
git log -3
Hier werden die drei letzten Commits angezeigt. Lesen Sie die Kommentare und den Namen des Autors, damit Sie die gewünschte Version eingrenzen können. Notieren Sie sich diese lange Festschreibungs-ID (dh b6b94f2c19c456336d60b9409fb1e373036d3d71) für die gewünschte Festschreibungsversion.
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71 - myfile.java Übergeben Sie
die Commit-ID UND den Dateinamen, den Sie wiederherstellen möchten. Stellen Sie sicher, dass vor und nach dem doppelten Bindestrich ein Leerzeichen steht.
Es gibt viele andere Möglichkeiten, dies zu tun. Aber dieser ist der einfachere, an den ich mich erinnern kann. Hoffentlich hilft das.
HINWEIS: Wenn Sie sich in Ihrem Projektpfad / -ordner befinden, müssen Sie den Pfad der vollständigen Datei nicht in den Befehl checkout eingeben.
quelle
Alle Antworten erwähnen
git checkout <tree-ish> -- <pathspec>
. Ab git v2.23.0 gibt es eine neue git-Wiederherstellungsmethode , die einen Teil dessen übernehmen soll, wofürgit checkout
verantwortlich war. Die Höhepunkte der Änderungen finden Sie im Github-Blog .Das Standardverhalten dieses Befehls besteht darin, den Status eines Arbeitsbaums mit dem Inhalt wiederherzustellen, der aus dem
source
Parameter stammt (in Ihrem Fall handelt es sich um einen Commit-Hash).Angenommen, der Commit-Hash ist, würde
abcdef
der Befehl folgendermaßen aussehen:was es (standardmäßig) in den Arbeitsbaum setzt. Wenn Sie die Änderung direkt in den Index aufnehmen möchten, damit sie sofort festgeschrieben werden kann:
oder mit kurzen Optionsnamen:
quelle