跳至内容
GitTree

课程 14 · 日常工作

标签、注释和发布命名

在检查的主提交处创建带注释的 v0.1.0,并仅将该标签推送到本地源。将标签对象与分支、签名和托管版本区分开来。

进度已保存在此浏览器中。

播放时会加载来自 YouTube 的视频(隐私增强模式)。

英文旁白 · English and Arabic 字幕

打开视频页面在 YouTube 上观看

你将学到什么

  • 创建一个带注释的标签,其中包含有意的消息。
  • 分别验证标签对象和剥离提交。
  • 推送一个显式标签而不发布所有标签。
  • 保持标签创建与托管版本不同。

开始之前

从第 13 课结束的地方开始:main/H7 clean、服务器主 H7、在 F1 发布的功能;不存在 v0.1.0 标签。明确不要求本地演示标签签名。

该视频是在 Ubuntu 24.04 使用 Git 2.52.0 和 GitTree 2.0 录制的:标签已创建并推送到应用程序中;之前的状态、拒绝的重复名称以及在终端中运行的检查。 macOS 或 Windows 上没有运行任何内容,并且 Ubuntu 是唯一记录的 Linux 系统。 GitTree 的源 Git 版本是 2.39.0。

GitTree 要求您登录;免费计划涵盖了这里的每一步。不需要提供商帐户、专业版/试用版、API 凭证或互联网服务。本地裸源不是 GitLab 或 CI。所有身份均使用 example.com;切勿在源代码检查中运行本课程。

通过 GitTree 或本地路径以相同的输入进行突变,而不是连续进行。只读验证可以遵循其中任何一个。任何被描述为终端工作的准备工作都被标记为本机准备,而不是发明的应用程序功能。

概念和状态效应

分支通常随着提交而前进;发布标签是一个刻意稳定的名称。轻量级标签直接命名一个对象;带注释的标签添加自己的标签对象、标记器和消息。

v0.1.0 在这里命名一个标签对象。 v0.1.0^{} 将其剥离到提交。这两个层的不同对象 ID 是预期的,并不表示两个版本。

注释不是加密签名。发布 Git 标签并不是创建提供商发行说明、上传资产或分发桌面版本。此处不执行任何外部操作。

Create 添加 refs/tags/v0.1.0 加上标签对象;推送会添加所选服务器标签。 HEAD、本地分支、索引和工作文件不会移动。

准备准确的项目状态

在第 13 课后使用原始 main。在创建标签之前检查实际的 H7 SHA 并验证标签是否不存在。标记后请勿添加笔记本提交。

在GitTree

调色板:Command+Shift+P(在 Ubuntu 上为 Ctrl+Shift+P);输入确切命名的命令并选择它。命名引用操作使用该行的上下文菜单,而不是无参数的调色板快捷方式。

  1. 选择实际的主/H7图行(文档:添加Leo的复习提醒);确认其页脚更改和身份,然后右键单击它。
  2. 打开 Tag Here 并选择 Create Annotated Tag Here…(该行的菜单还列出了一个普通的 Create Tag Here…,它构成了一个轻量级标记)。该对话框的标题是“在以下位置创建带注释的标签”:提交的短 ID。
  3. 设置标签名称 v0.1.0 和 Message First 可用的 GitTree 功能课程检查点。
  4. 在 Signing 下,选项包括遵循 Git 配置、签署此标记和 Don’t sign this tag;该对话框指出 Git 配置不会对标签进行签名(未设置 tag.gpgSign)。对于此明确的未签名课程,选择不签署此标签;不要更改全局签名配置。
  5. 点击一次创建标签并等待;确认 v0.1.0 标记预期提交而不更改结账。
  6. 在侧面板的 Tags 组中,右键单击 v0.1.0 → Push Tag(同一菜单还提供“删除标签...”和“从远程删除标签...”,本课程不使用这些功能)。通知上写着“推送标签 v0.1.0”。
  7. 验证本机标签对象类型、消息和剥离提交以及服务器标签身份;不要将注释与签名混淆。
  8. 保持 main 干净并且标签不变。不要使用“推送所有标签”或创建提供程序版本。

对于每个普通提交:Summary 是规定的主题;描述为空;修改先前的提交、跳过挂钩、添加签署者、不同的作者、提交后推送以及允许空提交;没有共同作者。仅暂存指定的文件,然后将更改提交到 N 个文件一次(文件为一个),或者使用 Command+Enter 作为替代方案。等待真正的结果。明确修改的课程仅更改所述选项。

在航站楼

clean main 的本机等效项:

Command · bash
git tag --annotate --no-sign v0.1.0 --message "First usable GitTree Features course checkpoint"
git cat-file -t v0.1.0
git for-each-ref --format='%(contents:subject)' refs/tags/v0.1.0
git rev-parse 'v0.1.0^{}'
git push --quiet origin refs/tags/v0.1.0
git ls-remote --tags origin refs/tags/v0.1.0 'refs/tags/v0.1.0^{}'
git status --short

--annotate 的缩写形式为 -a (git tag -a v0.1.0 -m "message"),而 --message 为 -m;无论哪种方式,Git 都会使用自己的消息存储标签对象,这与轻量级的 git tag v0.1.0 不同。

创建/推送成功;类型和消息输出:

输出
tag
First usable GitTree Features course checkpoint

剥离后的 SHA 等于实际的 main。 ls-remote 返回实际的标记对象和剥离提交 ID;记录这些变量值,而不是模型标签。最终状态为空。单独的重名尝试:

Command · bash
git tag v0.1.0

实际 stderr,出口 128:

输出
fatal: tag 'v0.1.0' already exists

原来的标签仍然存在;切勿使用 -f 来隐藏冲突。

结果

Where you end: 带注释的 v0.1.0 存在于本地和本地裸源上,消息第一个可用的 GitTree 功能课程检查点,剥离提交 H7。 Main/HEAD/index/work 不变;没有托管发布或签名。

常见错误

  • 调用带注释的标签进行签名。
  • 标记选定的旧行而不是主行。
  • 无意中推送每个本地标签。

如果出现问题

在确认之前取消错误的创建。如果本地标签错误,请检查其实际目标以及在任何显式删除之前是否已发布;本机重复拒绝保留现有引用。

检查你的理解情况

回答每个问题,然后阅读原因。标记为“必填”的问题将有助于完成本课程。

  1. 第 1 题,共 6 题

    这里的 v0.1.0 是什么?

    选择一个答案。

  2. 第 2 题,共 6 题

    哪些主张是合理的?

    选择每个适用的答案。

  3. 第 3 题,共 6 题
    必填

    标记是否会创建另一个主要提交?

    选择一个答案。

  4. 第 4 题,共 6 题
    必填

    不强制重复使用相同的名称:结果?

    选择一个答案。

  5. 第 5 题,共 6 题

    标签和主 ID 不同:损坏?

    选择一个答案。

  6. 第 6 题,共 6 题
    必填

    结果证明什么?

    选择每个适用的答案。

0 个(共 6 个)正确

正确回答所需的问题以完成课程。

在此浏览器中检查。

练习

验证对象类型标记、准确注释、剥离的 SHA=main 和两个服务器标记层。预测重复拒绝,同时保留第一个标签和干净的工作。

您自己的确认:该网站无法看到您的计算机。

要完成本课程,请正确回答所需的问题并确认实践练习。

回顾

  • Annotation添加一个标签对象。
  • 仅推送所选标签。
  • Git 标签和托管版本有所不同。

术语表介绍

带注释的标签 — ?? ?? ?? ??轻量级标签 — ??标记者 — বানানা剥离提交 — 删除。

视频文字记录

视频的旁白,逐条提示。

显示成绩单
  1. 从确切的检查点开始。
  2. 命名分支、索引 和工作版本。
  3. 仅准备单独的课程副本。
  4. 在标记之前选择准确的提交。
  5. 在该提交中创建带注释的标签。
  6. 写下名称和有意义的注释。
  7. 注释并不意味着 加密签名。
  8. 标签不会切换您的分支。
  9. 仅推送指定的标签。
  10. 剥离标签以验证其提交。
  11. 不要发明托管版本。
  12. 这里的 v0.1.0 是什么?
  13. 验证的对象类型是 标签并剥离到主目录。
  14. 哪些主张是合理的?
  15. 未签名的注释添加 元数据但不移动 HEAD。
  16. 标记是否会创建另一个主要提交?
  17. 标签参考/对象点 到现有的提交。
  18. 不强制重复使用相同的名称:结果?
  19. 测量的重复尝试 exited128 并保留标签。
  20. 标签和主 ID 不同:损坏?
  21. 带注释的标签自己的对象 与其提交目标不同。
  22. 结果证明什么?
  23. 读取两个对象层并 实际选择的服务器参考。
  24. 验证实际结果, 不仅仅是一条消息。
  25. 在行动之前预测改变的输入。
  26. 在恢复之前保留有用的工作。
  27. 在继续之前证明检查点。
  28. 保留验证结果 以便下一步。