首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Git中的两个标记之间提取不同的文件版本?

问如何在Git中的两个标记之间提取不同的文件版本?
EN

Stack Overflow用户
提问于 2014-06-21 07:37:25
回答 1查看 285关注 0票数 3

像这里提到的方法,Get list of new commits between two tags in Git?给出了diff文件的列表。

但是,我有一个约束,就像我不能每次签出一个标记一样,因为我需要在不同标记之间提供超过1000个请求/秒的diff文件。有什么方法可以实现这一点吗?

例如,我有3个标签:

  • 1.0
  • 1.1
  • 1.2

现在假设文件one.txt更改了所有标记,并且head位于最新的标记(1.2)上。现在当我做了

代码语言:javascript
复制
git diff 1.0 1.1 --stat

它返回我的文件名one.txt,所以现在我知道one.txt被更改了,我可以抓取该文件。但是,要在标签1.1上获得one.txt,我需要首先在1.1签出,否则我将得到最新的one.txt,所以这里我需要避免签出,并得到与1.1相同的one.txt。

有什么解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-21 08:37:12

解决方案1:git checkout

使用带有修订说明符(如分支、标记或提交sha )的git checkout以及文件路径,将该文件的修订签出到您的工作副本中:

代码语言:javascript
复制
git checkout <tag> -- <filepath>

请注意,这只会修改该特定文件的版本。其余的工作副本将不会受到影响。

文档

来自git log (摘要):

git结账-p --补丁--… 当给出<paths>或--patch时,git checkout做而不是交换分支。它从索引文件或命名的<tree-ish> (通常是提交)...The <tree-ish>参数中更新工作树中的命名路径,可用于指定特定的树-ish(即提交、标记或树),以便在更新工作树之前更新给定路径的索引。

解决方案2:git show

还可以使用git show检索文件的版本,并将结果输出到文件中:

代码语言:javascript
复制
git show <tag>:<filepath> > <outputPath>

另请参阅

官方Linux内核文档:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24339484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档