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 switchund git restoreBefehlen 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 checkoutoder git showkö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.
$REVISIONkann 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.