列出 git-ls-remote 时为什么标签名称后面有“^{}”? [复制]

2023-11-20

当我跑步时git ls-remote在工作树中,该命令输出原始存储库中的修订列表。由于某种原因,我对每个标签进行了 2 个修订,对于同一标签的第二个修订,标签名称包括^{}

git ls-remote
From [email protected]:andris9/zzzzzz.git
d69e66d7c915b9682618b7f304b80cc0ae4c7809    HEAD
....
bb944682f7f65272137de74ed18605e49257356c    refs/tags/v0.1.6
771a930dc0ba86769d6862bc4dc100acc50170fa    refs/tags/v0.1.6^{}
a72251d945353a360087eb78ee75287c38a1c0e6    refs/tags/v0.1.7
d69e66d7c915b9682618b7f304b80cc0ae4c7809    refs/tags/v0.1.7^{}

我创建标签

git tag -a v0.1.8 -m "tag message"
git push --tags

从例子来看git-ls-remote man page没有这样的重复标签,所以也许我做错了什么?


有 2 种类型的标签:

  • 轻的- 只是指向某个对象的引用(例如提交)。
  • 带注释的- 一个单独的 git 对象本身,并存储更多信息,如作者、提交者、提交消息等。

当你使用git tag -a要创建标签,git 会为您创建一个带注释的标签。

The ^{}是用于取消引用标签的语法。它描述于git 修订版.

  • 当与标签对象一起使用时,git 会递归地取消引用标签,直到找到非标签对象。

  • 当与非标签对象一起使用时,它不会执行任何操作,相当于跳过^{}

The refs/tags/v0.1.6存储库中的 ref 指向标签对象bb944682f7f65272137de74ed18605e49257356c,这又指向771a930dc0ba86769d6862bc4dc100acc50170fa(非标签对象)我猜测它是在创建标签时存储提交信息。

所以当你这样做时refs/tags/v0.1.6^{},git 将取消引用该标签并将其解析为771a930dc0ba86769d6862bc4dc100acc50170fa- 非标签对象。

还有一个git show-ref命令可用于仅列出标签,并可选择取消引用,如下所示,并且在您的情况下应产生以下输出:

$ git show-ref --tags
bb944682f7f65272137de74ed18605e49257356c    refs/tags/v0.1.6
a72251d945353a360087eb78ee75287c38a1c0e6    refs/tags/v0.1.7

$ git show-ref --tags --dereference
bb944682f7f65272137de74ed18605e49257356c    refs/tags/v0.1.6
771a930dc0ba86769d6862bc4dc100acc50170fa    refs/tags/v0.1.6^{}
a72251d945353a360087eb78ee75287c38a1c0e6    refs/tags/v0.1.7
d69e66d7c915b9682618b7f304b80cc0ae4c7809    refs/tags/v0.1.7^{}

要确认这一点,您可以使用git show命令为您提供有关 git 对象的更多详细信息。

这是来自我的测试 git 存储库之一的信息。

$ git show 43f9a98886ba873c0468c608f24c408b9991414f
tag v0.1
Tagger: Ash <tuxdude@OptimusPrime>
Date:   Sun Jul 15 00:14:43 2012 -0700

Tagging Stable repo 0.1 :)
-----BEGIN PGP SIGNATURE-----
<PGP-SIGNATURE>
-----END PGP SIGNATURE-----

commit e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
Merge: 796efcd 58e3a4d
Author: Ash <tuxdude@OptimusPrime>
Date:   Sun Jul 15 00:02:44 2012 -0700

    Merge branch 'dev' into 'master' for stable 0.1.

$ git show e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
commit e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
Merge: 796efcd 58e3a4d
Author: Ash <tuxdude@OptimusPrime>
Date:   Sun Jul 15 00:02:44 2012 -0700

    Merge branch 'dev' into 'master' for stable 0.1.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列出 git-ls-remote 时为什么标签名称后面有“^{}”? [复制] 的相关文章

随机推荐

  • “导入错误:无法导入名称多数组”

    新程序员来了 我正在尝试在 Windows 命令提示符中运行脚本 但在导入 numpy 包时遇到问题 并且我不知道出了什么问题 如何修复它 当我在 iPython 中运行该脚本时 它运行得很好 但是 当我在命令提示符中运行它时 我得到以下信
  • 在 iPhone 中根据触摸拖动旋转图像

    我想根据用户触摸拖动的速度顺时针或逆时针方向旋转图像 我认为这可以通过一些数学和逻辑来完成 这个的代码示例是什么样的 如果您的目标是 iOS 3 2 或更高版本 则可以使用UIRotationGestureRecognizer 代码看起来像
  • 替换 DataGridView 中的 DateTime.MinValue

    我正在开发一个姓名记录应用程序 该信息存储在 SQLite 数据库中 数据库中的所有列都是 TEXT 类型 出生日期列除外 它是 DATETIME 我转移到 SQLite 数据库的原始 Access 数据库允许出生日期为空 因此当我复制它时
  • .user.ini 文件适用于子目录吗?

    是否 user ini控制文件夹特定 PHP 设置的文件也下降到子文件夹中吗 我正在阅读一些网站 他们建议这样做 尽管没有很多关于它的信息 但是我发现如果我从子文件夹运行脚本 它不会使用来自 user ini file 我是否遗漏了某些内容
  • nodejs如何从stdin读取击键

    是否可以在运行的 Nodejs 脚本中侦听传入的击键 如果我使用process openStdin 并聆听其 data 事件 然后输入被缓冲 直到下一个换行符 如下所示 stdin test js var stdin process ope
  • python 的 sys.stdin.read() 会阻塞吗?

    我正在适应这个 Django 管理命令为了我自己的目的 该脚本是一个简单的 while 循环守护进程 它从 sys stdin 读取 第 152 行 在command handle 根据协议并将结果写入 sys stdout 我希望sys
  • 方向更改后 UIView addsubview:告诉视图调整大小

    我有一个 UIView 作为纵向模式下的 XIB 该视图以编程方式添加到视图控制器中 如下所示 NSArray nibObjects NSBundle mainBundle loadNibNamed InputView owner self
  • MATLAB parfor 切片问题?

    我有一段代码可以在一系列图像中找到哈里斯角点 我需要对 92 张图像执行此操作 但速度相当慢 因此 我想并行运行代码 我下面的代码有一个与变量 corners 相关的错误 Harris corners max pts 900 corners
  • Facebook SDK 3.1 - 验证访问令牌时出错

    我正在尝试将我的应用程序转换到新的 Facebook SDK 3 1 支持 iOS6 身份验证 我让它运行得很好 所以我决定从 FB 网站上的授权应用程序列表中删除该应用程序 以测试 iOS 是否会再次请求许可 现在我第一次打电话给 FBR
  • 带有空标记的 Java StringTokenizer

    我有一个看起来像 56 0 76 0 93 1230 的字符串 我使用 StringTokenizer 将其分割为 然而 这似乎是从 93 直接跳到 1230 有没有办法让它在移动到 1230 之前返回六个空字符串 Use String s
  • std::move 的未定义行为

    来自移动页面cppreference 的 除非另有说明 所有标准库对象都具有 被移出的状态被置于有效但未指定的状态 那是 仅限没有前提条件的函数 例如赋值 操作符 可以在对象被移动后安全地使用它 因此 从同一页面上的示例来看 下面的代码被认
  • 错误:Android Pre Dex:未指定 Android SDK

    我已经下载了gdx setup jar从网站上 我将其运行为 java jar gdx setup jar 我选择我想要的选项并为其生成项目idea libgdx 1 6 2 当我单击生成按钮时 该工具不会向我抛出任何错误 当我跑步时ide
  • Firestore获取根集合的所有文档和子集合

    假设我有这种结构 A collection a doc name Tim B collection b doc color blue where A and B are 收藏品 while a and b are 文件 有没有一种方法可以通
  • 如何在 Matplotlib 中以 3D 形式绘制热图颜色

    I am using Matplotlib 3D to plot 3 dimensions of my dataset like below 但现在我还想将第四维 即 0 到 20 之间的标量值 可视化为热图 所以基本上 我希望每个点都根据
  • App Engine Java 11 无法在实时服务器上找到或加载主类

    tl dr 为什么这在本地有效 但在部署到实时 App Engine 项目时却无效 我正在尝试使用 Java 11 版本的 App Engine 创建一个基于 servlet 的准系统 Web 应用程序 我正在将一些项目从 Java 8 更
  • 如何在 multiautocompletetextview 中使用空间标记器(如 gmail 到 android 中的字段)正确添加和删除联系人气泡

    i am struggling alot with adding the Bubbles to to field like in gmail or facebook messanger please look into this pictu
  • Android“您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用”

    好的 我收到此错误 标题 很多帖子建议我 甚至Android studio 更改主题 更改为App Appcompat 我已经做到了 清单文件
  • PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

    我从数据库中选择一些数据并将它们编码为 json 但我遇到了捷克符号的问题 例如 我的文件采用utf 8编码 我的数据库也是utf 8编码 我也将标头设置为utf 8编码 请问我还应该做什么 My code header Content T
  • VS2015企业版中出现错误C4576

    我有错误C4576在 Visual Studio 2015 中 当我尝试编译文件 transcoding c 时 该文件的源代码在这里 转码 c 错误 C4576 带括号的类型后跟初始值设定项列表是非标准显式类型转换语法 错误出现在该指令的
  • 列出 git-ls-remote 时为什么标签名称后面有“^{}”? [复制]

    这个问题在这里已经有答案了 当我跑步时git ls remote在工作树中 该命令输出原始存储库中的修订列表 由于某种原因 我对每个标签进行了 2 个修订 对于同一标签的第二个修订 标签名称包括 git ls remote From ema