Word 2021/365 多级列表与题注:3步解决“表0-1”编号异常问题
2026/7/12 16:35:23
核心结论:
- dev 分支永远不要
merge master,而应使用rebase master- 上游
upstream的代码只能进入“集成分支(integration)”,不能直接进入dev / master这两条规则并非经验之谈,而是由 Git 提交拓扑(DAG)结构决定的必然结论。
在实际工程中,尤其是:
master / dev等长期分支很多仓库最终都会出现:
--ff-only永远无法使用根本原因不是 Git 用错,而是分支拓扑模型错误。
dev 分支不能通过
git merge master来同步 master 的更新,
必须使用git rebase master。
这条规则的本质目标只有一个:
保持 dev 与 master 的拓扑结构“相似(同构)”。
master: A ─ B ─ C ─ D ─ E \ d1 ─ d2 ─ d3 (dev)特点:
gitcheckout devgitrebase masterrebase 前:
A ─ B ─ C ─ D ─ E ─ F (master) \ d1 ─ d2 (dev)rebase 后:
A ─ B ─ C ─ D ─ E ─ F (master) \ d1' ─ d2' (dev)结论:
gitcheckout devgitmerge masterA ─ B ─ C ─ D ─ E ─ F \ d1 ─ d2 ─── M (dev)问题:
该部分详见如何优雅地同步和管理企业内部项目与上游开源代码的更新
本文是进一步的说明。
upstream 通常具有以下特征:
拓扑示例:
U1 ─ U2 ─ M / \ U3 U4upstream 的提交图通常是不可控的复杂子图。
upstream → dev ↔ master后果:
upstream → integration → master → devintegration 的角色:
拓扑缓冲区 / 防火墙
gitcheckout mastergitcheckout -b integrationgitcheckout integrationgitfetch upstreamgitrebase upstream/main冲突只允许在 integration 分支解决
gitcheckout mastergitmerge integration特点:
gitcheckout devgitrebase masterupstream: U1 ─ U2 ─ U3 ─ U4 | v integration: U1 ─ U2 ─ U3 ─ U4 ─ I1 ─ I2 | v master: M1 ─ M2 ─ I1 ─ I2 | v dev: M1 ─ M2 ─ I1 ─ I2 ─ d1 ─ d2❌ 禁止:
gitmerge master# 在 dev 上gitmerge upstream# 在 dev / master 上✅ 允许:
gitrebase master# dev 同步gitrebase upstream# 仅 integration分支管理的本质不是“能不能合并”,
而是“拓扑是否长期可控”。
只要遵守这两条规则:
你的 Git 历史将长期保持清晰、可推导、可维护。