课程 13 · 日常工作
推送提交并发布分支
将预期的分支发布到本地裸源,而不覆盖 Leo 的新主干。显式地将仅落后的主要向前推进,然后使用其自己的上游发布该功能。
- 级别: 初学者
- 阅读 2 分钟
- 4 分钟的视频
- 已更新
- 在这节课之前: 获取队友的更改而不替换您的页面
进度已保存在此浏览器中。
播放时会加载来自 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);输入确切命名的命令并选择它。命名引用操作使用该行的上下文菜单,而不是无参数的调色板快捷方式。
- 在 main 上,检查实际源/目的地和 0/1 计数;不要在规范中首先推送较旧的主要内容。
- 在侧面板的远程组中,右键单击 origin/main → Merge origin/main into main。在 Record it as 中选择 Fast-forward only,然后选择 Merge。预计主线位于 H7,其中包含 Leo 的页脚、一个父级和图中的一条直线。
- 运行下面的祖先/干净读回;如果 main 发生分歧,则取消而不是选择重写模式。
- 单击主工具栏上的工具栏 Push。通知上写着“一切都已经是最新的了。”:这不是一个新的提交。
- 在“本地”下,打开 feature 文件夹并右键单击 pricing-cards → Push feature/pricing-cards。对于一个遥控器,没有对话框:通知上写着“将功能/定价卡推送到原始/功能/定价卡”。
- 推送没有设置上游(分支没有)。右键单击同一行 → Upstream → Set Upstream…,在 What should feature/pricing-cards track? 中选择 origin/feature/pricing-cards,然后选择 Track。验证服务器功能 F1 和上游。
- 选择主图和特征图标签,无需结帐;确认它们仍然不同提示并且没有出现合并。
- 让主分支保持签出状态,干净,两个指定的服务器分支都经过验证。不要选择强制推送...或发布每个参考。
对于每个普通提交:Summary 是规定的主题;描述为空;修改先前的提交、跳过挂钩、添加签署者、不同的作者、提交后推送以及允许空提交;没有共同作者。仅暂存指定的文件,然后将更改提交到 N 个文件一次(文件为一个),或者使用 Command+Enter 作为替代方案。等待真正的结果。明确修改的课程仅更改所述选项。
在航站楼
来自原始演示,本机替代方案:
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。
- 假设推送设置了功能的上游,或者设置合并了任何内容:应用程序需要单独的“设置上游...”步骤。
如果出现问题
拒绝后,在重试之前获取并检查祖先/目的地。对于这个精确的仅后输入,请使用显式快进。远程推送没有通用应用程序撤消;协调以后的任何远程修正。
检查你的理解情况
回答每个问题,然后阅读原因。标记为“必填”的问题将有助于完成本课程。
0 个(共 6 个)正确
正确回答所需的问题以完成课程。
在此浏览器中检查。
练习
证明主/服务器 H7 相等、功能/服务器 F1 相等、功能上游、未更改的主结帐和干净状态。在单独的旧主副本中预测并观察拒绝,而不会丢失 H7。
您自己的确认:该网站无法看到您的计算机。
要完成本课程,请正确回答所需的问题并确认实践练习。
回顾
- 检查确切的目的地。
- 显式集成仅后面的后代。
- 发布一个分支而不合并它。
有关的
术语表介绍
推 — あ;发布分支 — 发布分支;上游 — 上游;快进 — 快进。
视频文字记录
视频的旁白,逐条提示。
显示成绩单
- 从确切的检查点开始。
- 命名分支、索引 和工作版本。
- 仅准备单独的课程副本。
- 检查确切的来源和目的地。
- 仅在以下情况下快进 血统允许。
- 如果实际分支出现分歧,则停止。
- 现在 Main 已经与目的地匹配。
- 发布点名 功能,而不是每个分支。
- 验证该功能自己的上游。
- 发布不合并该功能。
- 保持原来的主干干净。
- 出版F1是做什么的?
- 它发送名为 ref 的内容, 并非所有工作文件。
- 典型的成功之后哪些事实成立?
- 它的推动力已经协调一致。
- 快进 main/H6 至 后代 H7:新的合并提交?
- ref 移动到现有的后代。
- 更改输入:将旧的 H6 推倒 对齐前的服务器 H7。
- 原生版本已退出 1,保留 H7。
- Push 表示已经达到 日期。 F1发布了吗?
- 主要的结果说 没有关于另一位裁判的信息。
- 最终需要哪些证据?
- 比较每个分支的实际 SHA。
- 验证实际结果, 不仅仅是一条消息。
- 在行动之前预测改变的输入。
- 在恢复之前保留有用的工作。
- 在继续之前证明检查点。
- 保留验证结果 以便下一步。