git cherry 是什么
按 patch-id 对比两条分支,列出哪些提交已在目标分支存在等价改动(- 标记)或尚未包含(+ 标记):判断 cherry-pick 与回移是否做过时,比肉眼比对可靠。patch-id 按改动内容计算,与提交哈希无关,适合在回移、审计与分支盘点场景快速得到差异集合。
基本信息
| 用途 | 找出「有等价补丁」与「未包含」的提交 |
|---|---|
| 语法 | git cherry [-v] <上游> <分支> |
| 标记 | - 上游已有等价改动;+ 尚未包含 |
| -v | 显示每个提交的标题,便于阅读 |
| 只读性 | 纯查询命令,不修改任何引用 |
| 原理 | 按 patch-id(改动内容指纹)比较 |
典型使用场景
- 回移检查:确认提交是否已打进维护分支,避免重复拣选。
- 发布审计:列出仍未进入发布分支的修复。
- 分支盘点:对比两条长期分支的差异集合。
- 重复排查:发现同一修复被多次拣选时定位重复来源。
- 流程验证:验证团队回挑清单是否真的完成。
- 多分支矩阵:脚本对多组分支两两运行,生成回移缺口报表。
- 教学解释:向团队展示 patch-id 与提交哈希的区别。
常用示例
常用示例
git cherry -v main release/2.x # 列出对比结果,- 与 + 两类
git cherry main release/2.x | grep '^+' | head # 只看未包含的提交
# 输出形如:+ sha 标题(未含)或 - sha 标题(已有等价改动)
git log --oneline -5 release/2.x # 复核分支最近状态输出标记读法
| 标记 | 含义 | 后续动作 |
|---|---|---|
| + | 目标分支尚未找到等价改动 | 评估是否需要回移 |
| - | 已存在等价改动(patch-id 相同) | 无需重复处理 |
| 带 -v 的标题 | 对应提交的标题文本 | 人工复核时快速阅读 |
patch-id 按改动内容计算,与提交哈希无关;用它检查 cherry-pick 是否遗漏比肉眼对比可靠,输出也适合直接喂给脚本做缺口统计;回移前先跑一遍,把它当检查清单而不是最终结论。