git - `ls-remote --refs` 与克隆然后 `describe --tags` 有什么关系?
问题描述
列出远程存储库的最新标记会产生与克隆该存储库然后描述其标记不同的答案。例如
$ git ls-remote --refs git://git.kernel.org/pub/scm/git/git.git | tail -1
dcba104ffdcf2f27bc5058d8321e7a6c2fe8f27e refs/tags/v2.9.5
$ git clone -q git://git.kernel.org/pub/scm/git/git.git gitdir && cd gitdir && git describe --tags
v2.31.1-606-gdf6c4f7
这两种价值观如何相互关联?它们有何不同?
我知道“标签名称是本地的”,我的问题可能与此有关,但我想我不明白这句话的含义。在打电话之前我确实尝试了另一个建议,但无济于事。git fetch --tags
describe
我最终想要做的是以编程方式找到最稳定的版本或标签(如果他们不使用版本),并检查该版本以在本地构建它。
解决方案
引用似乎按字母顺序排序,而不是按数值排序,因此tail -1
返回的不是最新标签,而是字母排序中的最后一个。查看git ls-remote
;的全部输出 这是相关部分:
a320a5c4764b02f0898a98b4b58e11fad5e54e09 refs/tags/v2.3.9
2d9685d47a7e516281aa093bf0cddc8aafa72448 refs/tags/v2.30.0
a8eaf9de52c2d49799d7dc724e688ccbfa74390c refs/tags/v2.30.0-rc0
cb70effebd91d9e0d4ce81650785e973b5d16ad1 refs/tags/v2.30.0-rc1
a6fee3f22b95c86086b11e3c93d0f1752f9a75c5 refs/tags/v2.30.0-rc2
36b80a59b799802fe776ed390870fe520d262f5c refs/tags/v2.30.1
4340cdd2bdf420acc349f5cda141141230d5095a refs/tags/v2.30.2
3e90d4b58f3819cfd58ac61cb8668e83d3ea0563 refs/tags/v2.31.0
4c4ac06896d8b9ec1ded1d5d9aeedb4e8ece44ab refs/tags/v2.31.0-rc0
6a80b8083c4be2c5703ec122e511a6747af53295 refs/tags/v2.31.0-rc1
ca1f84a036c5658938d72650ae34630ebb140866 refs/tags/v2.31.0-rc2
28afb7555c7013c02b5ee5dc0286546f1f8e2b8f refs/tags/v2.31.1
67308bd628c6235dbc1bad60c9ad1f2d27d576cc refs/tags/v2.4.0
92db05f2a784fe0a715de29fc97172eac6bb5089 refs/tags/v2.4.0-rc0
1c8737f27f912aa2438ce3bf9d4e83eb178de00a refs/tags/v2.4.0-rc1
48e512c8c9397baa5533efa6683f45646234ae1e refs/tags/v2.4.0-rc2
4beece6ef56cb59ea05afb326fd17c1839b8f282 refs/tags/v2.4.0-rc3
2be062dfcfd1fd4aca132ec02a40b56f63776202 refs/tags/v2.4.1
dd0e3e9610a9b312236fb926c5a9d8cbd73190d9 refs/tags/v2.4.10
4f24175ae76efaf8265e179662a4258387019256 refs/tags/v2.4.11
0a493fee385e530baa898a4ba4c0a64fd02ed0d6 refs/tags/v2.4.12
29932f3915935d773dc8d52c292cadd81c81071d refs/tags/v2.4.2
要按数值排序,请使用--sort=v:refname
:
$ git ls-remote --sort=v:refname --refs git://git.kernel.org/pub/scm/git/git.gitt | tail -10
a8eaf9de52c2d49799d7dc724e688ccbfa74390c refs/tags/v2.30.0-rc0
cb70effebd91d9e0d4ce81650785e973b5d16ad1 refs/tags/v2.30.0-rc1
a6fee3f22b95c86086b11e3c93d0f1752f9a75c5 refs/tags/v2.30.0-rc2
36b80a59b799802fe776ed390870fe520d262f5c refs/tags/v2.30.1
4340cdd2bdf420acc349f5cda141141230d5095a refs/tags/v2.30.2
3e90d4b58f3819cfd58ac61cb8668e83d3ea0563 refs/tags/v2.31.0
4c4ac06896d8b9ec1ded1d5d9aeedb4e8ece44ab refs/tags/v2.31.0-rc0
6a80b8083c4be2c5703ec122e511a6747af53295 refs/tags/v2.31.0-rc1
ca1f84a036c5658938d72650ae34630ebb140866 refs/tags/v2.31.0-rc2
28afb7555c7013c02b5ee5dc0286546f1f8e2b8f refs/tags/v2.31.1
推荐阅读
- c# - 命名空间“枚举”中不存在类型或命名空间名称“Parse”
- javascript - 只有第一次打开屏幕才有效?
- c# - Azure 应用服务无法从 Visual Studio 2019 发布
- html - 在Angular中加载元素后添加css样式
- android - 为什么Android SDK 30会生成无效的APK文件?
- python - 我正在尝试用 matplotlib 绘制三行,但它显示为一条
- java - 将提供的 spark .jar 依赖项添加到 gradle build 后得到“找不到或加载主类”
- java - 如何在数学方程中使用用户输入的整数
- c++ - 按位或运算符对 2 的补码字节有什么特殊作用吗?
- python - 如何根据两个索引列表获取数组元素?