什么是 YAML 对比?
YAML 对比会比较两个 YAML 文档并显示它们的差异。Kubernetes、Helm、Docker Compose、GitHub Actions、Ansible 和 OpenAPI 的配置文件都是 YAML,当两个版本不一致时,人们关心的通常是“哪个配置项变了?”而不是“哪一行变了?”。本工具两者都能回答:结构比较会解析两个文件并列出变更路径,并排视图则显示各行内容并高亮改动的词语。
如何比较两个 YAML 文件
- 在左侧粘贴或拖入原始 YAML,在右侧放入修改后的版本。
- 保持比较结构可忽略键顺序、缩进、引号和注释;选择比较文本则按原文对比文件。
- 使用隐藏相同行聚焦于变更,使用上一处 / 下一处逐个查看。
示例:一次 Kubernetes 变更
# before # after
spec: spec:
replicas: 3 template:
template: spec:
spec: containers:
containers: - name: web
- name: web image: nginx:1.27
image: nginx:1.25 replicas: 5
由于 replicas 被移到了末尾,按行对比几乎会标记每一行。而结构对比只报告两处变更:spec.replicas 3 → 5,以及 spec.template.spec.containers[0].image nginx:1.25 → nginx:1.27。
哪些会被忽略,哪些不会
| 结构模式下忽略 | 会被报告 |
|---|---|
| 映射内的键顺序 | 新增、删除和修改的键 |
| 缩进以及流样式与块样式的差异 | 新增、删除和修改的列表项 |
引号(a 与 "a") | 类型变化("5" 与 5) |
| 注释和锚点 | 解析锚点后不同的值 |
在 YAML 中,字符串 "5" 和数字 5 是不同的值,对比结果会明确指出。这能发现一种经典的配置错误:带引号的端口号或版本号被一个工具读成字符串,却被另一个工具读成数字。