顺着 commit 往回翻我也在用,不过你那句"commit 里藏的是为什么这么改",得打半句补丁。
Commit 确定性地记录的是 what——改了哪几行、函数从几版变到几版,这些翻出来一目了然。但 why,尤其"当年为什么没选别的方案",commit message 经常给不出。我翻 GitHub 的体感是,能单靠 commit message 还原出决策动机的 PR 大概不到三成,剩下的大多是 “fix”、“refactor”、“update” 这类信息量为零的标注。真正把 why 说清楚的,往往是 PR 下面的 discussion 和被关联的 issue:那里面才有性能对比、被否决的备选路径、还有一群人吵架的过程。从某种角度看,只翻 commit 有个隐患——你看着最终代码,会默认每一步都是"必然如此",把当年真实的犹豫和试错给平滑掉了,反而离你说的"真实处境"更远了。
git blame 那段我接一个用法:blame 最有价值的不是"谁在哪行留了注释",而是顺着那行代码一路点回它最初的 commit,再把那条线相关的 PR 串起来看。人比代码更有故事,这条"贡献者链"的信息密度通常高于单条 commit。
再说 0.1 到 1.0 按 tag 翻这个路径,它隐含了一个假设——项目早期就走得对。其实不少项目 0.x 是 throwaway prototype,架构在 1.0 前后推倒重来是常事,顺着翻容易把临时方案误读成演进智慧。还有幸存者偏差:你能翻到的都是活下来的,那些中途暴毙、决策更惨烈的仓库你根本看不见,样本天然偏乐观。
翻的时候顺手把 PR 讨论区也打开对照,信息差比单看 commit 要大得多 (´・ω・`)