Primary navigation
简体中文
Markdown 转 Word

用 Markdown 管理报告和技术文档版本

如果报告和技术文档仍然靠“最终版”“最终版-2”“客户确认版”这样的文件名管理,版本很快就会失去边界。更稳妥的做法是:用 Markdown 保存可读的源文件,用 Git 记录每次修改,用标签或分支标记可交付版本,再把图片、附件和生成结果一起纳入发布检查。

直接结论:不要把“文件名变化”当成版本管理。先确定每个版本服务的对象、对应的源文件和发布边界,再决定使用提交记录、分支、标签,还是独立的版本目录。报告通常适合用不可变的发布快照,技术文档则更适合维护“当前版”并保留受支持版本的入口。

用 Markdown、Git 分支和发布标签管理报告与技术文档版本
Markdown 源文件、变更记录和固定发布快照组成一条可追溯的文档链路。

先分清三个不同的“版本”

很多混乱来自把三件事混成一个编号:文档内容的修改历史、文档所对应的产品版本,以及已经交付给读者的文件快照。它们应该分别处理。

层次 回答的问题 推荐记录
修改历史 谁改了什么,为什么改? Git commit、diff、pull request
适用版本 说明适用于哪一个产品或 API 版本? front matter、版本目录、支持范围
交付快照 客户拿到的那一份能否被准确复现? Git tag、归档包、DOCX 或 PDF

Git 的基本价值是记录文件内容如何变化,并支持比较和恢复历史状态。它不只适用于源代码,也适用于纯文本报告和 Markdown 文档。Pro Git 关于版本控制对此有清晰说明。

根据文档类型选择版本模型

不要一开始就复制一份“v1”“v2”目录。先看读者需要的是持续更新的内容,还是一份不可改变的交付物。

场景 适合的做法 不要这样做
季度报告、客户交付报告 批准后创建 tag,并保存对应附件和导出结果。 继续修改已经交付的 tag。
持续更新的产品文档 维护当前主线,用 front matter 标记支持的产品版本。 为每一个小修正复制整套文档。
多个 API 大版本并行支持 保留版本入口,只对确有差异的段落分流。 让读者猜测页面对应哪个 API 版本。

GitHub Docs 的做法值得参考:用 YAML front matter 指明版本范围,并在同一份 Markdown 中使用条件内容,减少重复维护。这里的方式适合版本差异有限、需要共用大部分正文的技术文档。查看 GitHub Docs 的版本管理说明。

一个能长期维护的目录结构

报告和技术文档最好与代码、示例和图片保持稳定的相对关系。下面的结构足够简单,也能支持版本标签和发布归档:

docs-project/
├── docs/
│   ├── index.md
│   ├── api/
│   │   ├── overview.md
│   │   └── authentication.md
│   └── reports/
│       └── 2026-q3.md
├── assets/
│   ├── api-auth-flow.png
│   └── report-chart-2026-q3.png
├── CHANGELOG.md
└── README.md

图片引用使用相对于 Markdown 文件的路径,例如 ../assets/api-auth-flow.png。不要把电脑本地的绝对路径写进文档,也不要在重命名图片后忘记同步修改引用。站内的Markdown 图片转 Word 后不显示排查指南也覆盖了路径、大小写和打包层级问题。

在 Markdown 文件头部写清适用范围

front matter 不是版本控制系统本身,但它能把“这篇文档适用于什么”放在内容旁边。字段名称可以按你的构建工具调整,重点是保持一致:

---
title: API Authentication
product: DocuCraftBox API
versions:
  api: [v2, v3]
status: maintained
last_reviewed: 2026-09-23
---

This page explains the shared authentication flow.

如果某一段只适用于 v3,不要把整篇文档复制成两份。可以拆成独立的小节、共享变量,或使用构建系统提供的条件语法。只在版本差异真的影响读者操作时才分叉,否则版本目录会比问题本身更难维护。

用分支、提交和标签形成发布流程

一套小团队也能执行的流程如下。关键不是命令数量,而是每一步都留下可以检查的边界:

  1. 从当前主线创建文档分支,例如 docs/api-v3-auth。
  2. 只在这个分支修改正文、示例、图片和 front matter。
  3. 用 git diff 检查命令、参数、链接和版本号。
  4. 让熟悉产品的人审阅事实,让熟悉读者的人审阅表达和步骤。
  5. 合并后运行文档构建或导出,确认页面、图片、代码示例和附件都能打开。
  6. 批准交付后创建不可变标签,例如 docs-2026-q3 或 api-v3.2-docs。
git switch main
git pull
git switch -c docs/api-v3-auth
# edit Markdown, examples, and assets
git diff --check
git add docs/ assets/ CHANGELOG.md
git commit -m "docs: update API authentication for v3"
git push -u origin docs/api-v3-auth

GitHub Docs 的 Git 工作流同样要求检查分支状态、暂存变更、提交、推送,再通过拉取请求合并。

Markdown文档从源文件、分支审阅到发布标签的版本管理流程
从 Markdown 源文件到审阅分支、发布标签和导出文件的版本发布流程。

报告和技术文档的发布方式不一样

报告:保留批准时的快照

报告中的数字、结论和图表通常对应一个明确的截止时间。批准后,应把源 Markdown、图片、数据说明和导出文件绑定到同一个 tag 或归档目录。后续如果发现错误,创建新的修订版本,并写清旧版本是否仍然有效。

技术文档:标记支持范围

技术文档更关注“读者现在应该执行哪一步”。当前版本可以持续更新,但旧 API 或旧产品版本仍需要一个清楚的入口。对于只改文字的修订,保留同一个页面通常更合适;对于参数、行为或接口发生不兼容变化的版本,应该明确分流。

一个实用判断:如果读者拿着旧版本产品照着新文档操作会得到错误结果,就需要版本边界;如果只是说明更清楚、链接更准确或拼写被修正,通常不需要复制整篇文档。

报告使用固定发布快照,技术文档使用当前版本与受支持版本入口
报告强调批准时的固定快照,技术文档强调当前内容与受支持版本的清晰入口。

CHANGELOG 应该记录影响,不是复制提交日志

提交记录面向维护者,CHANGELOG 面向需要判断“我是否要更新”的读者。每条记录至少回答:哪个版本发生了变化、变化会影响谁、读者需要做什么。

# Changelog

## 3.2.0 - 2026-09-23

### Changed
- API authentication examples now use the v3 header names.

### Fixed
- Corrected the relative path for the authentication flow image.

Common Changelog建议按版本倒序组织内容,按 Added、Changed、Removed、Fixed 等影响分类,并把每项变化链接到更详细的信息。

图片、附件和导出文件也要进入版本边界

Markdown 文本可以直接比较,但二进制附件通常不能像文本那样审阅。图表、截图、CSV、DOCX 和 PDF 应该与引用它们的 Markdown 版本一起保存。至少检查四件事:

  • 文件名是否稳定,避免使用“final-new”这类含义不清的命名。
  • 相对路径在本地预览、构建环境和归档包中是否一致。
  • 图表中的数字是否与报告对应的时间范围一致。
  • 导出 DOCX 或 PDF 是否来自当前 tag,而不是作者电脑上的未提交文件。

如果需要把报告截图或图表整理成可分享的 PDF,可以另外查看 Images to PDF 工具。它适合作为已完成版本的输出环节,不应替代 Markdown 源文件和 Git 历史。

合并前的 10 分钟检查

  1. 打开 diff,确认没有把草稿备注、临时路径或本地密钥提交进去。
  2. 检查标题层级是否跳级,代码块是否仍能复制。
  3. 逐个打开外部链接和内部链接,确认锚文本说明了目标。
  4. 检查图片是否存在、尺寸是否适合页面,并为有信息的图片写 ALT。
  5. 确认版本号、发布日期、API 参数和示例输出来自同一个范围。
  6. 构建一次网站或导出一次文档,再查看最终结果。
  7. 确认 CHANGELOG 说明了读者可感知的影响。
  8. 批准后创建 tag,并记录生成文件对应的 commit。

常见问题排查

现象 常见原因 处理方法
读者不知道页面适用于哪个版本 版本信息只写在发布说明里 把适用版本放进 front matter、页面标题或版本选择器。
旧报告被新数据覆盖 没有给批准版本创建 tag 恢复旧 commit,补建发布标签,并将修订另存为新版本。
图片在网站上消失 路径、大小写或目录层级改变 在与 Markdown 同一版本中检查图片目录和引用路径。
同一段内容在多个版本中不一致 复制了整篇文档,却没有定义单一来源 把共用内容抽成 reusable section,只对有差异的段落分版本。

FAQ

Markdown 文件需要单独写版本号吗?

不一定。Git commit 和 tag 已经能记录修改与发布边界,但页面还需要告诉读者适用的产品或 API 版本。把两个问题分别处理,通常比只在文件头写一个数字更清楚。

报告应该用分支还是 tag?

分支适合准备和审阅阶段,tag 适合批准后的固定快照。可以先在分支中修改和讨论,确认交付后再创建 tag。

什么时候应该复制一份新文档?

当旧版本仍需要独立访问,且新旧版本的操作结果不同,才值得保留独立版本入口。纯粹的错别字、链接修正和表达改进,通常直接更新当前页面即可。

Git 能代替文档审阅吗?

不能。Git 能告诉你发生了什么变化,但不能判断参数是否正确、截图是否过时,也不能替你验证读者能否完成操作。事实审阅、链接检查和最终渲染仍然需要明确的检查步骤。

下一步

先选一份最近仍在修改的报告或 API 文档,把源文件、图片和导出文件放入同一个目录。然后创建文档分支,补上适用版本字段,完成一次 diff 审阅,最后用 tag 固定第一个可交付版本。这个流程跑通后,再决定是否需要版本选择器、自动构建或条件内容。

参考资料

分享这篇文章

转发给同事,或保存链接稍后阅读。