如何根据标签签出git中的文件

时间:2015-04-27 10:50:27

标签: git tags

我有一个提交哈希abcx,我已经给它一个标记100。 现在,我想将文件example.pl结帐到该代码100。是不是可能在git?
我可以git checkout abcs example.pl,但我直接想要checkout a file based on the tag

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:11)

由于tags work in Git的原因,它们基本上只是只读分支,你可以将其视为Git中的任何分支。您可以将其视为tags/<tag>

要使用标记检查存储库的整个状态到工作目录,请编写:

git checkout tags/<yourtag>

但与正常分支的情况一样,您可以通过列出单个文件来减少结帐范围:

git checkout tags/<yourtag> <file1> <file2> ...

您在日志中看到的行为是因为Git有两种指向存储库的方法。当您使用以下命令检出整个存储库时,您的本地存储库指针正在被更改:

git checkout <tag/hash>
当您使用以下命令检查文件时,

或文件的个别状态会发生变化:

git checkout <tag/hash> filelist

即使您将所有文件签出到以前的存储库状态:

git checkout <tag/hash> *

您的本地存储库指针不会发生变化。 git日志使用本地存储库指针来记录文件上的更改,以便它知道&#34; future&#34;在您检入文件的状态之前发生的更改。所以从git perspective命令:

git checkout <tag/hash/branch> file

不影响存储库指针,它只是改变文件的状态以匹配特定的时间点,如果你将运行git状态,你会看到这些文件是本地更改,它没有什么不同以任何方式从存储库中的文件状态获取复制粘贴。