3 回答
TA贡献1828条经验 获得超3个赞
git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
另请参阅git如何撤消一个文件的更改?
正如JakubNarębski在评论中提到的那样:
git show experiment:path/to/app.js > path/to/app.js
也可以工作,除了如SO问题“ 如何从Git中的特定修订中检索单个文件? ”中详细说明的那样,您需要使用repo根目录中的完整路径。
因此,Jakub在他的例子中使用了路径/ to / app.js。
正如Frosty在评论中提到的那样:
你只会获得app.js的最新状态
但是,对于git checkout
或者git show
,您实际上可以引用您想要的任何修订,如SO问题“ git gui中文件的git checkout修订版 ”所示:
$ 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
等等。
你也可以从藏匿处做到这一点:
git checkout stash -- app.js如果您正在处理两个分支并且不想提交,那么这非常有用。
TA贡献1815条经验 获得超6个赞
一切都更简单,使用git checkout。
假设you're on master分支,得到app.js from new-feature分支做:
git checkout new-feature path/to/app.js
// note that there is no leading slash in the path!
这将为您带来所需文件的内容。您可以像往常一样使用sha1的一部分而不是 新功能 分支名来获取该特定提交中的文件。
TA贡献1827条经验 获得超4个赞
补充VonC和chhh的答案。
git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js
要么
git checkout experiment -- app.js
- 3 回答
- 0 关注
- 1419 浏览
添加回答
举报