git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Vedi anche git come annullare le modifiche di un file?
Aggiornamento agosto 2019, Git 2.23
Con il nuovo git switch
e i git restore
comandi, sarebbe:
git switch master
git restore -s experiment -- app.js
Per impostazione predefinita, viene ripristinato solo l'albero di lavoro.
Se si desidera aggiornare anche l'indice (che significa ripristinare il contenuto del file e aggiungerlo all'indice in un solo comando):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Come Jakub Narębski menziona nei commenti:
git show experiment:path/to/app.js > path/to/app.js
funziona anche, tranne che, come dettagliato nella domanda SO " Come recuperare un singolo file dalla revisione specifica in Git? ", è necessario utilizzare il percorso completo dalla directory principale del repository.
Da qui il percorso / to / app.js utilizzato da Jakub nel suo esempio.
Come menziona Frosty nel commento:
otterrai solo lo stato più recente di app.js
Ma, per git checkout
o git show
, puoi effettivamente fare riferimento a qualsiasi revisione tu voglia, come illustrato nella domanda SO " revisione di git checkout di un file in git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
sarebbe lo stesso è $ FILENAME è un percorso completo di un file con versione.
$REVISION
può essere come mostrato in 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
e così via.
schmijos aggiunge nei commenti :
puoi anche farlo da una scorta:
git checkout stash -- app.js
Questo è molto utile se stai lavorando su due rami e non vuoi impegnarti.