如何根据标签检出 git 中的文件
How to checkout a file in git based on a tag
我有一个提交散列 abcx
并且我给了它一个标签 100
。
现在我想将文件 example.pl
检出到该标签 100
。 git可以吗?
我可以git checkout abcs example.pl
,但我想直接签出一个基于标签的文件。
谁能帮我解决这个问题?
由于 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 日志使用本地存储库指针来记录文件的更改,因此它将知道在您签入文件的状态之前发生的 "future" 更改。所以从git角度命令:
git checkout <tag/hash/branch> file
不影响存储库指针,它只是更改文件的状态以匹配特定的时间点,如果你将 运行 git 状态,你将看到这些文件为本地更改,它与从存储库中的文件状态复制粘贴没有任何区别。
我有一个提交散列 abcx
并且我给了它一个标签 100
。
现在我想将文件 example.pl
检出到该标签 100
。 git可以吗?
我可以git checkout abcs example.pl
,但我想直接签出一个基于标签的文件。
谁能帮我解决这个问题?
由于 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 日志使用本地存储库指针来记录文件的更改,因此它将知道在您签入文件的状态之前发生的 "future" 更改。所以从git角度命令:
git checkout <tag/hash/branch> file
不影响存储库指针,它只是更改文件的状态以匹配特定的时间点,如果你将 运行 git 状态,你将看到这些文件为本地更改,它与从存储库中的文件状态复制粘贴没有任何区别。