git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
Xem thêm git làm thế nào để hoàn tác các thay đổi của một tập tin?
Cập nhật tháng 8 năm 2019, Git 2.23
Với lệnh mới git switch
và git restore
lệnh, đó sẽ là:
git switch master
git restore -s experiment -- app.js
Theo mặc định, chỉ có cây làm việc được khôi phục.
Nếu bạn cũng muốn cập nhật chỉ mục (nghĩa là khôi phục nội dung tệp và thêm nó vào chỉ mục trong một lệnh):
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Như Jakub Narębski đề cập trong các bình luận:
git show experiment:path/to/app.js > path/to/app.js
cũng hoạt động, ngoại trừ, như chi tiết trong câu hỏi SO " Làm cách nào để truy xuất một tệp từ sửa đổi cụ thể trong Git? ", bạn cần sử dụng đường dẫn đầy đủ từ thư mục gốc của repo.
Do đó, đường dẫn / đến / app.js được Jakub sử dụng trong ví dụ của mình.
Như Frosty đề cập trong bình luận:
bạn sẽ chỉ nhận được trạng thái gần đây nhất của app.js
Nhưng, cho git checkout
hoặc git show
, bạn thực sự có thể tham khảo bất kỳ sửa đổi nào bạn muốn, như được minh họa trong câu hỏi SO " sửa đổi kiểm tra git của một tệp trong git gui ":
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
sẽ giống nhau là $ FILENAME là một đường dẫn đầy đủ của một tệp được phiên bản.
$REVISION
có thể được hiển thị trong 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
và như thế.
schmijos thêm vào trong các ý kiến :
bạn cũng có thể làm điều này từ một stash:
git checkout stash -- app.js
Điều này rất hữu ích nếu bạn đang làm việc trên hai chi nhánh và không muốn cam kết.