此处提到的方法Get list of new commits between two tags in Git?为我提供了差异文件列表。
但是,我有一个约束,就像我每次都不能检查标签一样,因为我需要提供超过1000个请求/秒,在不同标签之间询问diff文件。有没有可用的方法来实现这个目标?
例如,我有3个标签:
现在假设所有标签中的文件one.txt
发生变化,而head位于最新标签(1.2)上。现在我做的时候
git diff 1.0 1.1 --stat
它返回我的文件名one.txt
所以现在我知道one.txt
已更改,我可以抓取该文件。但是,要在代码1.1上获取one.txt
,我需要先在1.1处结帐,否则我会收到最新的one.txt
,因此我需要避免该结帐并获取one.txt
是1.1。
请建议任何解决方案?
答案 0 :(得分:3)
git checkout
将git checkout
与分支,标记或提交sha等修订说明符一起使用,以及文件路径,将该文件的修订版本签出到您的工作副本中:
git checkout <tag> -- <filepath>
请注意,这只会修改该特定文件的版本。其余的工作副本不会受到影响。
来自official Linux Kernel documentation for git log
(摘要):
git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>…
当
<paths>
或--patch
被提供时,git checkout
会不切换分支。它从索引文件或命名的<tree-ish>
(通常是提交)更新工作树中的命名路径...<tree-ish>
参数可用于指定特定的树(即提交,标记或树)在更新工作树之前更新给定路径的索引。
git show
您还可以使用git show
检索文件的版本并将结果输出到文件:
git show <tag>:<filepath> > <outputPath>
官方Linux内核文档: