git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Veja também git como desfazer alterações de um arquivo?
Atualização em agosto de 2019, Git 2.23
Com o novo git switch
e os git restore
comandos, isso seria:
git switch master
git restore -s experiment -- app.js
Por padrão, apenas a árvore de trabalho é restaurada.
Se você deseja atualizar o índice também (ou seja, restaurar o conteúdo do arquivo e adicioná-lo ao índice em um comando):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Como Jakub Narębski menciona nos comentários:
git show experiment:path/to/app.js > path/to/app.js
também funciona, exceto que, conforme detalhado na pergunta do SO " Como recuperar um único arquivo de uma revisão específica no Git? ", você precisa usar o caminho completo no diretório raiz do repositório.
Daí o caminho / to / app.js usado por Jakub em seu exemplo.
Como Frosty menciona no comentário:
você obterá apenas o estado mais recente do app.js
Mas, para git checkout
ou git show
, você pode realmente fazer referência a qualquer revisão que desejar, conforme ilustrado na pergunta SO " revisão de git checkout de um arquivo no git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
seria o mesmo que $ FILENAME é o caminho completo de um arquivo com versão.
$REVISION
pode ser como mostrado em 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 assim por diante.
schmijos acrescenta nos comentários :
você também pode fazer isso a partir de um stash:
git checkout stash -- app.js
Isso é muito útil se você estiver trabalhando em dois ramos e não quiser confirmar.