Command Reference

git-cherry 教程

解释如何用 git-cherry 判断哪些提交尚未被另一条历史吸收。

适合谁看
  • 已经会基本提交和分支操作的开发者
  • 想理解命令边界与风险的人
前置知识
  • 知道工作区、暂存区、提交的基本关系
  • 能读懂 `git status` 和简单历史图
常见风险
  • 误把本地整理命令用到共享历史
  • 在没确认恢复路径前直接继续改写历史

一句话理解

git-cherry 用于判断哪些提交尚未被另一条历史吸收。

什么时候适合用

  • 当你需要判断哪些提交尚未被另一条历史吸收
  • 当你想把这类操作做成稳定流程而不是手工重复
  • 当你需要更准确地理解 Git 在这一步到底记录了什么

基本示例

git cherry origin/main feature/login

读这条命令时最该注意什么

这是一个纯只读命令,不会修改仓库的任何状态。可以放心使用。

一个更稳的实践建议

在真实仓库执行前,先用一段最小可复现历史做演练。

补充理解角度

  • 处理复杂协作和历史分析问题
  • 把一次性操作收敛成可重复流程
  • 降低高风险操作的偶然性

这条命令在流程里解决什么问题

git cherry 是一个纯只读的比较工具,不修改任何提交或引用。它的作用是告诉你:哪些提交在当前分支上,但还没有被另一个分支吸收。它不会重塑历史,也不会移动引用。

典型用例

  • 在 rebase 或 merge 之前,用 git cherry 快速查看哪些提交还待合并。
  • 维护维护分支时,用 git cherry 判断某个修复提交是否已经被主线吸收。
  • 对比两条分支,确认哪些提交已经通过 cherry-pick 被同步过了(因为 cherry 通过 patch-id 匹配,不要求 hash 相同)。

图例理解

只读比较命令的作用面git cherry 对比两条分支的提交,输出哪些尚未被上游吸收(+ 号)和哪些已被吸收(- 号)。
输入
上游分支待比较分支
结果
+ 未吸收的提交- 已吸收的提交
git cherry 是只读操作,基于 patch-id 判断提交内容是否等效,不要求 commit hash 相同。

特殊情况与边界

  • git cherry 通过 patch-id 比较,所以即使提交的 hash 不同(比如 cherry-pick 过),只要内容一样就会标记为已吸收。
  • 如果有重命名或大幅修改的提交,patch-id 可能判断不准,需要人工确认。
  • 搭配 git cherry -v 可以看到提交信息,更方便判断。
  • 这是一个纯只读命令,不会修改仓库的任何状态。

延伸阅读

搭配 git log --oneline --graphgit diffgit log --cherry-pick 一起使用,可以更全面地理解分支间的差异。