跳至内容
GitTree

课程 9 · 日常工作

创建一个功能分支并仅退役一次性引用

在功能/定价卡上添加工作流程卡,同时保持 main 不变。重命名一次性分支并仅在证明其提交已可从主分支访问后将其删除。

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

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

英文旁白 · English and Arabic 字幕

打开视频页面在 YouTube 上观看

你将学到什么

  • 将创建分支名称与检出分支名称分开。
  • 在功能上提交工作流部分而不移动主要部分。
  • 重命名/删除一次性本地引用,而无需发明合并。
  • 区分本机安全删除检查和 GitTree 的受保护删除。

开始之前

您从第 8 课结束的地方开始:main 有五个记录的提交、一个干净的工作树和索引、已提交的 CSS-02-WORKING 并且没有远程。保持生成的 dist 被忽略。该视频是在 Ubuntu 24.04 上使用 Git 2.52.0 和 GitTree 2.0 录制的:在应用程序中创建、重命名、删除和切换分支,保存并提交文件,并针对应用程序创建的内容或针对仅创建和重命名状态的单独副本运行终端检查。 macOS 或 Windows 上没有运行任何内容,并且 Ubuntu 是唯一记录的 Linux 系统。 GitTree 的检查最小值为 Git 2.39.0。登录后,本地分支就属于免费计划,不需要主机或专业版/试用版。

下面的所有分支突变都是 written steps for the isolated GitTree Features demo,从未指示对此网站结账进行分支。作者的源分支保持不变。

概念

分支是提交的可移动本地名称,而不是每个文件的副本。单独创建一个名字并不会移动 HEAD。切换将 HEAD 连接到该分支并根据需要更新索引/工作文件。随后的提交仅推进已签出的分支。 本机分支语义、切换语义。

一开始,主要名称为H5。在 H5 创建的一次性分支向同一个圈添加第二个标签,而不是另一个提交。重命名会更改标签。删除已经可达的标签并不会删除 main 的历史记录。后来的功能/定价卡从 H5 开始,前进到 F1;主要停留在H5。没有创建或删除远程。

本机 git branch -d 检查合并性(通常相对于上游/当前 HEAD)。 GitTree's inspected local deletion adapter uses -D after protecting the selected tip in its trash/journal. It is not the same refusal rule. 切勿假设应用程序会仅仅因为 native -d 就会停止未合并的删除。在本课程中,我们证明一次性提示是 main before either path 的祖先,保留该功能,并且永远不要选择远程删除操作。

完整功能文件

只有index.html 在该功能上发生了变化。将其替换为完整的 HTML-03;现有的样式/脚本/历史与第 8 课留下的完全相同。主题分支名称是字面意思,但该部分不包含价格或促销信息。

文件摘录 · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work clearly.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
    <section aria-labelledby="plans-title">
      <h2 id="plans-title">Choose the workflow you need</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>Local Git</h3>
          <p>Local Git workflows work without signing in.</p>
        </article>
        <article class="feature-card">
          <h3>Connected workflows</h3>
          <p>Provider integrations and Nour require Pro or an applicable trial.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

在GitTree

  1. 确认原始文件在历史文档提交时位于主、干净的位置。打开 Command Palette… (Command/Ctrl+Shift+P) → Create Branch… (repo.branch.create)。期待Create a branch at HEAD。
  2. 设置 Branch name = practice/rename-me。 Uncheck Check out the new branch。选择Create Branch。预计新的引用会在同一提交中出现,而 main 仍保持签出状态。
  3. 在本地分支列表中,右键单击practice/rename-me → Rename practice/rename-me…。在 Rename practice/rename-me 中,将分支名称设置为 practice/renamed,然后设置为 Rename。预计旧名称不存在,新名称在同一尖端;没有文件更改。
  4. 在终端中,证明下面的祖先条件。然后右键单击练习/重命名 → Delete practice/renamed…。查看 Delete practice/renamed in gittree-features?,确保仅定位本地引用,然后查看 Delete practice/renamed。如果名称/提示不同,请取消。来源承诺突变前垃圾/日志条目,而不是远程恢复;在调用经过运行时验证的操作/证据之前捕获实际操作/证据。
  5. 调色板再次创建分支...,命名为 feature/pricing-cards,选中 Check out the new branch,然后创建分支。预计该功能将在同一个 H5 中得到检验。与步骤 2 不同,此复选框使操作创建 and 开关。
  6. 显示文件 (Command/Ctrl+Shift+E),聚焦 index.html 并输入。将其工作文本替换为完整的 HTML-03 和 Save (Command/Ctrl+S)。不要暂存生成的 dist。
  7. 返回图表 → 调色板 Show Working Changes。查看index.html并使用Stage File。摘要feat: add workflow cards;普通选项关闭; Commit Changes to 1 File / Command/Ctrl+Enter 一次。
  8. 右键单击本地分支列表中的 main → Checkout main。期待文档时代的英雄没有工作流程部分和干净的工作。右键功能/定价卡 → Checkout feature/pricing-cards 返回;由于分支的提交树不同,它的部分会重新出现。
  9. 如果出现脏开关对话框,请Cancel并检查您的实际工作。规范的开关点是干净的;不要选择与胶片相匹配的丢弃选项。
  10. 结束于功能/定价卡。确认 main 有 5 次提交,并且该功能有 1 次额外提交。 not 合并它或删除它以获得单线图。

命名引用上的上下文操作不是不带参数的通用调色板命令。顶级调色板创建分支...是一个单独的当前 HEAD 操作。使用实际的菜单标签;默认的直接分支创建/切换快捷方式尚未发明。

在航站楼

本机等效项,位于干净的主输入处;应用程序成功后不要重复突变:

Command · bash
git branch practice/rename-me
git symbolic-ref --short HEAD
git branch -m practice/rename-me practice/renamed
git merge-base --is-ancestor practice/renamed main

分支/重命名/祖先检查静默成功;符号引用打印:

输出
main

祖先查询的 Exit 0 证明这个一次性提示已经可达。非零结果意味着停止;不要替代强制删除。

Command · bash
git branch --delete --quiet practice/renamed
git switch --quiet --create feature/pricing-cards

两人都默默地成功了。保存完整的 HTML-03 后:

Command · bash
git add -- index.html
git commit --quiet -m "feat: add workflow cards"
git switch --quiet main

一切都在这场比赛中悄然取得了成功。该主开关不会移动功能参考。

故意本机拒绝,同时检查 main:

Command · bash
git -c advice.forceDeleteBranch=false branch -d feature/pricing-cards

观察到 stderr,退出 1:

输出
error: the branch 'feature/pricing-cards' is not fully merged

该功能仍然存在。 Do not attempt this as an app safety test: 其受保护的删除政策有所不同。不要用 -D 替换 -d 来“修复”课程。

退货并检查:

Command · bash
git switch --quiet feature/pricing-cards
git symbolic-ref --short HEAD
git branch --format='%(refname:short)'
git rev-list --count main..feature/pricing-cards
git log --format=%s main..feature/pricing-cards
git diff --name-only main feature/pricing-cards
git rev-list --count main
git status --short

静音开关后观察到的输出,按顺序:

输出
feature/pricing-cards
feature/pricing-cards
main
1
feat: add workflow cards
index.html
5

最终短状态为空,退出为 0。两个一次性名称均不存在。不存在远程输出,因为未配置任何输出。

结果

在本课结束时:功能/定价卡已检查并清理干净,一个功能提交超出了主要功能; main 仍停留在五提交文档检查点。工作流程卡不包含价格。不存在一次性树枝。没有合并、远程、发布分支或提供者操作。

常见错误

  • 将分支标签计为提交。
  • 假设仅创建移动了 HEAD。
  • 重命名活动的 source-web 分支而不是演示引用。
  • 相信应用程序删除有本机 -d 的保护。
  • 删除有用的特征以简化图表。

如果出现问题

无效/重复的名称应使对话框保持打开状态并包含输入的值。读取错误;不要通过重命名不相关的引用来解决仅区分大小写的歧义。如果工作阻塞了某个开关,则取消并保留它;后面的存储/提交课程提供了深思熟虑的选择。在另一个工作树中签出的分支不能简单地删除。

原生的未合并拒绝是保护性的。应用程序的突变前快照是一种不同的机制,而不是忽略可达性或提示身份的权限。不能仅仅因为标签从过滤视图中暂时消失而将失败的突变呈现为成功。

检查你的理解情况

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

  1. 第 1 题,共 6 题

    在 H5 创建另一个裁判创造了多少历史?

    选择一个答案。

  2. 第 2 题,共 6 题

    在删除一次性引用之前,需要做什么?

    选择每个适用的答案。

  3. 第 3 题,共 6 题
    必填

    在 H5 的功能/定价卡上提交 HTML-03。主要在哪里?

    选择一个答案。

  4. 第 4 题,共 6 题
    必填

    取消选中在主分支上检查新分支。有什么变化?

    选择一个答案。

  5. 第 5 题,共 6 题

    Native -d 拒绝未合并的功能。这是否证明 GitTree 也拒绝了?

    选择一个答案。

  6. 第 6 题,共 6 题
    必填

    哪些证据证明检查点已完成?

    选择每个适用的答案。

0 个(共 6 个)正确

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

在此浏览器中检查。

练习

显示 main 未更改,并且该功能提前提交。更改的输入:如果检查新分支是 off,则预测 HEAD 保持主分支,直到显式切换。在单独的一次性重放中进行测试,而不是通过更改已完成的检查点。解释为什么本机拒绝不能证明应用程序拒绝。

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

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

回顾

  • 分支名称和提交是不同的对象。
  • 仅创建和创建并切换具有不同的 HEAD 效果。
  • 证明删除范围和可达性;受保护的应用程序删除和本机 -d 不同。

术语表介绍

分支 — فف;开关 — 电子版; ref—— 参考;可达 — قбрабайна;上游 — فف َّف;工作树 — 图库照片#

视频文字记录

视频的旁白,逐条提示。

显示成绩单
  1. 创建功能分支 同时保留主要内容。
  2. 新的分支名称可以 不创建提交。
  3. 创建一次性 不离开 main 的名称。
  4. 确认仅创建 没有切换你的分支。
  5. 重命名一次性引用,而不是 网站的源分支。
  6. 检查当前的一次性吸头 已经可以从 main 到达。
  7. 仅删除预先选中的 一次性参考。
  8. GitTree 的受保护删除是 不是本机安全删除拒绝。
  9. 这次,创建 功能并检查一下。
  10. 保存工作流程部分 没有价格或促销。
  11. 查看该功能的一个 在提交之前更改了文件。
  12. 致力于功能,而不是主要。
  13. 仅限已签出的分行 通过此提交取得进展。
  14. 切换选择 main 的提交树。
  15. 本机安全删除拒绝 未合并的功能。
  16. 该拒绝并不能证明GitTree 将拒绝同样的删除。
  17. 返回到功能的 记录的文件内容。
  18. 验证一项功能提交并 仅索引点 H T M L 发生了变化。
  19. Main 仍有 5 次提交 而且功能很干净。
  20. 关闭结帐后,新名称 存在但 HEAD 保留在 main 上。
  21. 取消意外的脏开关 并首先检查工作。
  22. 受保护的本地提示不是 远程恢复的承诺。
  23. 保留有用的功能并验证 可随意使用的名称消失了。
  24. 下一课介绍 遥控器;这里不需要任何东西。