git fetch <gitserver> <remotetag>:<localtag>
==================================
我就是这么做的 首先,我确保知道标签名称的拼写。
git ls-remote --tags gitserver; : or origin, whatever your remote is called
这给了我git服务器上可供选择的标签列表。原始海报已经知道他标签的名称,因此并非所有人都需要执行此步骤。输出看起来像这样,尽管实际列表更长。
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
我选择了想要的标签,然后将其获取,仅此而已。
git fetch gitserver Fix_110
然后,我在本地计算机上对此标签进行了标记,并赋予了标签相同的名称。
git tag Fix_110 FETCH_HEAD
我不想像其他人建议的那样克隆远程存储库,因为我正在处理的项目很大,我想在一个干净的环境中进行开发。我认为,这比建议克隆整个存储库的解决方案更接近最初的问题“我正试图找出如何下载特定标签”。我不明白为什么任何人如果要查看DOS 0.1源代码(例如),都必须拥有Windows NT和Windows 8.1源代码的副本。
我也不想像其他人建议的那样使用CHECKOUT。我有一个签出的分支,不想影响这一点。我的目的是获取所需的软件,以便可以挑选一些东西并将其添加到我的开发中。
可能有一种方法来获取标记本身,而不仅仅是获取标记的提交的副本。我必须自己标记提取的提交。编辑:是的,我现在找到了。
git fetch gitserver Fix_110:Fix_110
您在哪里看到冒号,即remote-name:local-name,此处为标记名。这将在不影响工作树等的情况下运行。它似乎只是将内容从远程复制到本地计算机,因此您拥有自己的副本。
git fetch gitserver --dry-run Fix_110:Fix_110
添加了--dry-run选项后,您可以查看该命令的功能(如果要验证其功能)。所以我想一个简单的
git fetch gitserver remotetag:localtag
才是真正的答案。
=
关于标记的单独说明...当我开始新的东西时,通常在git init之后标记空的存储库,因为
git rebase -i XXXXX
需要提交,然后出现一个问题:“如何为包括第一次软件更改的更改重新设定基础?” 所以当我开始工作时
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
即在我第一次真正的更改之前创建一个提交,然后再使用
git rebase -i EMPTY
如果我想重新整理我的所有工作,包括第一次更改。