为了账号安全,请及时绑定邮箱和手机立即绑定

如何从另一个分支中获取一个文件

如何从另一个分支中获取一个文件

Git
临摹微笑 2019-07-31 11:17:36
如何从另一个分支中获取一个文件我正在使用git并在master分支上工作。这个分支有一个名为的文件app.js。我有一个experiment分支,我做了一堆变更和大量的提交。现在我希望把做只对所有变化app.js从experiment到master分支。我怎么做?再一次,我不想合并。我只是想把所有的变化app.js从experiment分支带到master分支。
查看完整描述

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

等等。

schmijos 在评论中补充道:

你也可以从藏匿处做到这一点:

git checkout stash -- app.js

如果您正在处理两个分支并且不想提交,那么这非常有用。


查看完整回答
反对 回复 2019-07-31
?
红糖糍粑

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的一部分而不是 新功能 分支名来获取该特定提交中的文件。


查看完整回答
反对 回复 2019-07-31
?
GCT1015

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


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 1394 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信