git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Voir aussi git comment annuler les modifications d'un fichier?
Mise à jour d'août 2019, Git 2.23
Avec les nouvelles commandes git switch
et git restore
, ce serait:
git switch master
git restore -s experiment -- app.js
Par défaut, seule l'arborescence de travail est restaurée.
Si vous souhaitez également mettre à jour l'index (c'est-à-dire restaurer le contenu du fichier et l' ajouter à l'index en une seule commande):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Comme Jakub Narębski le mentionne dans les commentaires:
git show experiment:path/to/app.js > path/to/app.js
fonctionne aussi, sauf que, comme détaillé dans la question SO " Comment récupérer un seul fichier d'une révision spécifique dans Git? ", vous devez utiliser le chemin complet depuis le répertoire racine du référentiel.
D'où le chemin / to / app.js utilisé par Jakub dans son exemple.
Comme Frosty le mentionne dans le commentaire:
vous n'aurez que l'état le plus récent de app.js
Mais, pour git checkout
ou git show
, vous pouvez en fait référencer n'importe quelle révision que vous voulez, comme illustré dans la question SO " git checkout revision of a file in git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
serait le même si $ FILENAME est un chemin complet d'un fichier versionné.
$REVISION
peut être comme indiqué dans 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
etc.
schmijos ajoute dans les commentaires :
vous pouvez également le faire à partir d'une cachette:
git checkout stash -- app.js
Ceci est très utile si vous travaillez sur deux branches et que vous ne souhaitez pas vous engager.