gpt4 book ai didi

git - 如何在 Git 中的两个标签之间提取不同的文件版本?

转载 作者:太空狗 更新时间:2023-10-29 14:07:40 25 4
gpt4 key购买 nike

这里提到的方法Get list of new commits between two tags in Git?给我差异文件列表。

但是,我有一个限制,比如我不能每次都 checkout 标签,因为我需要在不同标签之间提供超过 1000 个请求/秒的请求差异文件。有没有什么方法可以实现这一点?

比如我有3个标签:

  • 1.0
  • 1.1
  • 1.2

现在假设一个文件 one.txt 在所有标签中都发生了变化,并且 head 在最新标签 (1.2) 上。现在当我做的时候

git diff 1.0 1.1 --stat

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

请提出任何解决方案?

最佳答案

解决方案 1:git checkout

使用 git checkout使用分支、标记或提交 sha 等修订说明符以及文件路径,会将文件的修订 check out 到您的工作副本中:

git checkout <tag> -- <filepath>

请注意,这只会修改那个特定文件的版本。您的工作副本的其余部分不会受到影响。

文档

来自official Linux Kernel documentation for git log (总结):

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>…

When <paths> or --patch are given, git checkout does not switch branches. It updates the named paths in the working tree from the index file or from a named <tree-ish> (most often a commit)...The <tree-ish> argument can be used to specify a specific tree-ish (i.e. commit, tag or tree) to update the index for the given paths before updating the working tree.

解决方案 2:git show

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

git show <tag>:<filepath> > <outputPath>

另见

官方 Linux 内核文档:

关于git - 如何在 Git 中的两个标签之间提取不同的文件版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com