git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Siehe auch git, wie Sie Änderungen an einer Datei rückgängig machen können.
Update August 2019, Git 2.23
Mit den neuen git switch
und git restore
Befehlen wäre das:
git switch master
git restore -s experiment -- app.js
Standardmäßig wird nur der Arbeitsbaum wiederhergestellt.
Wenn Sie den Index ebenfalls aktualisieren möchten (dh den Dateiinhalt wiederherstellen und mit einem Befehl zum Index hinzufügen möchten ):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Wie Jakub Narębski in den Kommentaren erwähnt:
git show experiment:path/to/app.js > path/to/app.js
funktioniert auch, außer dass, wie in der SO-Frage " Wie rufe ich eine einzelne Datei aus einer bestimmten Revision in Git ab?" ich " beschrieben, den vollständigen Pfad aus dem Stammverzeichnis des Repos verwenden müssen.
Daher der Pfad / zu / app.js, den Jakub in seinem Beispiel verwendet.
Wie Frosty im Kommentar erwähnt:
Sie erhalten nur den neuesten Status von app.js.
Aber für git checkout
oder git show
können Sie tatsächlich auf jede gewünschte Revision verweisen, wie in der SO-Frage " Git Checkout-Revision einer Datei in Git GUI " dargestellt:
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
wäre das gleiche ist $ FILENAME ist ein vollständiger Pfad einer versionierten Datei.
$REVISION
kann wie folgt sein git rev-parse
:
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
und so weiter.
schmijos fügt in den Kommentaren hinzu :
Sie können dies auch aus einem Vorrat heraus tun:
git checkout stash -- app.js
Dies ist sehr nützlich, wenn Sie an zwei Zweigen arbeiten und keine Festschreibung vornehmen möchten.