跳至内容
GitTree

课程 13 · 日常工作

推送提交并发布分支

将预期的分支发布到本地裸源,而不覆盖 Leo 的新主干。显式地将仅落后的主要向前推进,然后使用其自己的上游发布该功能。

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

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

英文旁白 · English and Arabic 字幕

打开视频页面在 YouTube 上观看

你将学到什么

  • 推送前检查源和目的地。
  • 在没有合并提交的情况下快进仅位于后面的分支。
  • 发布一项命名功能并验证其上游。
  • 区分拒绝和失去工作。

开始之前

从第 11 课结束的地方开始:main/H6 签出,origin/main/server H7 带有 Leo 的页脚,干净,主要 6 次与获取 7 次提交和 0/1。功能 F1 仅存在于本地,没有上游。

该视频是在 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 或本地路径以相同的输入进行突变,而不是连续进行。只读验证可以遵循其中任何一个。任何被描述为终端工作的准备工作都被标记为本机准备,而不是发明的应用程序功能。

概念和状态效应

推送建议更新选定的远程参考。它不是每个文件、未跟踪的缓冲区或分支的备份。即使网络连接正常,目标也可以拒绝更新。

传入的 H7 源自 main/H6。快进可以将 main 移动到该后代,而无需发明合并提交。这里介绍一下这个狭义的祖先操作;发散积分属于本课程后面的课程。

发布功能/定价卡将 F1 发送到新的服务器分支。在 GitTree 中,推送不会选择上游:您随后从同一分支行进行设置。它既不切换当前分支也不将其工作流程卡合并到主分支中。成功的无操作主推送并不是新的服务器提交。

显式快进将 main/HEAD、索引和工作更改为 H7。推送成功后仅更改所选服务器引用和本地跟踪/配置;它不保存未暂存的文本。远程 main 必须保留 Leo 的提交。

准备准确的项目状态

在第 11 课后使用原始版本,背景提取关闭以获得稳定的预览。没有添加新的文件有效负载或笔记本。有意的背后主拒绝是单独的本机采取,而不是单击应用程序强制推送的指令。

在GitTree

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

  1. 在 main 上,检查实际源/目的地和 0/1 计数;不要在规范中首先推送较旧的主要内容。
  2. 在侧面板的远程组中,右键单击 origin/main → Merge origin/main into main。在 Record it as 中选择 Fast-forward only,然后选择 Merge。预计主线位于 H7,其中包含 Leo 的页脚、一个父级和图中的一条直线。
  3. 运行下面的祖先/干净读回;如果 main 发生分歧,则取消而不是选择重写模式。
  4. 单击主工具栏上的工具栏 Push。通知上写着“一切都已经是最新的了。”:这不是一个新的提交。
  5. 在“本地”下,打开 feature 文件夹并右键单击 pricing-cards → Push feature/pricing-cards。对于一个遥控器,没有对话框:通知上写着“将功能/定价卡推送到原始/功能/定价卡”。
  6. 推送没有设置上游(分支没有)。右键单击同一行 → Upstream → Set Upstream…,在 What should feature/pricing-cards track? 中选择 origin/feature/pricing-cards,然后选择 Track。验证服务器功能 F1 和上游。
  7. 选择主图和特征图标签,无需结帐;确认它们仍然不同提示并且没有出现合并。
  8. 让主分支保持签出状态,干净,两个指定的服务器分支都经过验证。不要选择强制推送...或发布每个参考。

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

在航站楼

来自原始演示,本机替代方案:

Command · bash
git rev-list --left-right --count main...origin/main
git merge --ff-only --quiet origin/main
git push --quiet origin main
git push --quiet --set-upstream origin feature/pricing-cards
git rev-list --left-right --count main...origin/main
git rev-parse --abbrev-ref 'feature/pricing-cards@{upstream}'
git symbolic-ref --short HEAD
git status --short

首先计数0/1;快进和安静推动退出 0。最终的读回按顺序打印:

输出
0	0
origin/feature/pricing-cards
main

状态沉默。使用 git ls-remote --heads origin 独立比较服务器/本地主和功能实际 SHA;变量 ID 必须与其预期的本地提示相匹配。单独的预快进否定采取: git push --quiet origin main exited1 与实际诊断摘录:

输出
 ! [rejected]        main -> main (non-fast-forward)

完整的诊断名称测量的本地文件 URL 和 Git 提示。远程裁判没有因拒绝而改变;请勿伪造网址或强行修复。

结果

Where you end: 主要快进到 H7 并且仍然签出/干净;服务器主要仍然是H7。功能 F1 现已发布为 origin/feature/pricing-cards 并对其进行跟踪; main 和 feature 没有合并。

常见错误

  • 当您指的是指定功能时,发布当前的主要内容。
  • 将仅在后面的拒绝视为允许覆盖 Leo。
  • 假设推送设置了功能的上游,或者设置合并了任何内容:应用程序需要单独的“设置上游...”步骤。

如果出现问题

拒绝后,在重试之前获取并检查祖先/目的地。对于这个精确的仅后输入,请使用显式快进。远程推送没有通用应用程序撤消;协调以后的任何远程修正。

检查你的理解情况

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

  1. 第 1 题,共 6 题

    出版F1是做什么的?

    选择一个答案。

  2. 第 2 题,共 6 题

    典型的成功之后哪些事实成立?

    选择每个适用的答案。

  3. 第 3 题,共 6 题
    必填

    快进 main/H6 到后代 H7:新的合并提交?

    选择一个答案。

  4. 第 4 题,共 6 题
    必填

    更改输入:在对齐之前将旧的 H6 推到服务器 H7 上。

    选择一个答案。

  5. 第 5 题,共 6 题

    Push 说已经是最新的了。 F1发布了吗?

    选择一个答案。

  6. 第 6 题,共 6 题
    必填

    最终需要哪些证据?

    选择每个适用的答案。

0 个(共 6 个)正确

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

在此浏览器中检查。

练习

证明主/服务器 H7 相等、功能/服务器 F1 相等、功能上游、未更改的主结帐和干净状态。在单独的旧主副本中预测并观察拒绝,而不会丢失 H7。

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

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

回顾

  • 检查确切的目的地。
  • 显式集成仅后面的后代。
  • 发布一个分支而不合并它。

术语表介绍

推 — あ;发布分支 — 发布分支;上游 — 上游;快进 — 快进。

视频文字记录

视频的旁白,逐条提示。

显示成绩单
  1. 从确切的检查点开始。
  2. 命名分支、索引 和工作版本。
  3. 仅准备单独的课程副本。
  4. 检查确切的来源和目的地。
  5. 仅在以下情况下快进 血统允许。
  6. 如果实际分支出现分歧,则停止。
  7. 现在 Main 已经与目的地匹配。
  8. 发布点名 功能,而不是每个分支。
  9. 验证该功能自己的上游。
  10. 发布不合并该功能。
  11. 保持原来的主干干净。
  12. 出版F1是做什么的?
  13. 它发送名为 ref 的内容, 并非所有工作文件。
  14. 典型的成功之后哪些事实成立?
  15. 它的推动力已经协调一致。
  16. 快进 main/H6 至 后代 H7:新的合并提交?
  17. ref 移动到现有的后代。
  18. 更改输入:将旧的 H6 推倒 对齐前的服务器 H7。
  19. 原生版本已退出 1,保留 H7。
  20. Push 表示已经达到 日期。 F1发布了吗?
  21. 主要的结果说 没有关于另一位裁判的信息。
  22. 最终需要哪些证据?
  23. 比较每个分支的实际 SHA。
  24. 验证实际结果, 不仅仅是一条消息。
  25. 在行动之前预测改变的输入。
  26. 在恢复之前保留有用的工作。
  27. 在继续之前证明检查点。
  28. 保留验证结果 以便下一步。