git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Zobacz także git, jak cofnąć zmiany jednego pliku?
Aktualizacja sierpnia 2019, Git 2.23
W przypadku nowych poleceń git switch
i git restore
poleceń będzie to:
git switch master
git restore -s experiment -- app.js
Domyślnie przywracane jest tylko działające drzewo.
Jeśli chcesz również zaktualizować indeks (czyli przywrócić zawartość pliku i dodać go do indeksu za pomocą jednego polecenia):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Jak wspomina Jakub Narębski w komentarzach:
git show experiment:path/to/app.js > path/to/app.js
działa również, z tym wyjątkiem, że jak szczegółowo opisano w pytaniu SO „ Jak pobrać pojedynczy plik z konkretnej wersji w Git? ”, musisz użyć pełnej ścieżki z katalogu głównego repozytorium.
Stąd ścieżka / do / app.js użyta przez Jakuba w jego przykładzie.
Jak Frosty wspomina w komentarzu:
otrzymasz tylko najnowszy stan app.js
Ale dla git checkout
lub git show
możesz faktycznie odwoływać się do dowolnej wersji, jak zilustrowano w pytaniu SO „ git checkout wersja pliku w git gui ”:
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
byłoby tak samo, jak $ FILENAME to pełna ścieżka pliku wersjonowanego.
$REVISION
może być jak pokazano na 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
i tak dalej.
schmijos dodaje w komentarzach :
możesz to również zrobić ze skrytki:
git checkout stash -- app.js
Jest to bardzo przydatne, jeśli pracujesz nad dwoma oddziałami i nie chcesz zatwierdzać.