git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Дивіться також git, як скасувати зміни одного файлу?
Оновлення серпня 2019 року, Git 2.23
З новими git switch
та git restore
командами, це було б:
git switch master
git restore -s experiment -- app.js
За замовчуванням відновлюється лише робоче дерево.
Якщо ви також хочете оновити індекс (тобто відновити вміст файлу та додати його до індексу однією командою):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Як згадує Якуб Нарбський у коментарях:
git show experiment:path/to/app.js > path/to/app.js
працює також, за винятком того, що детально описано у питанні SO " Як отримати один файл із конкретної редакції в Git? ", Ви повинні використовувати повний шлях з кореневого каталогу репо.
Звідси шлях / до / app.js, використаний Якубом у своєму прикладі.
Як згадує Мороз у коментарі:
ви отримаєте лише останній стан app.js
Але, для git checkout
або git show
, ви можете насправді посилатися на будь-яку потрібну вам редакцію, як це проілюстровано у питанні ТА " ревізія git checkout файлу в git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
було б те саме, що $ FILENAME - це повний шлях до версії файлу.
$REVISION
може бути як показано на 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
і так далі.
schmijos додає в коментарях :
Ви також можете це зробити із скрині:
git checkout stash -- app.js
Це дуже корисно, якщо ви працюєте в двох відділеннях і не хочете брати на себе зобов'язання.