接受混乱的 git 历史

Lobsters Hottest 新闻

摘要

一篇博客文章,讨论两种 git 工作流理念——频繁提交与谨慎变基——并解释为何在大型团队中,鉴于团队的韧性,混乱的历史是可以接受的,文中还提到了 GitHub 的新堆叠 PR 功能。

<p><a href="https://lobste.rs/s/aj7msu/accepting_messy_git_history">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/31 18:50

# 接受混乱的 git 历史 来源:https://beza1e1.tuxen.de/git_two_users.html 由于 GitHub 刚刚发布了堆叠式拉取请求(https://github.blog/changelog/2026-07-30-stacked-pull-requests-are-now-in-public-preview/),围绕它的讨论揭示了两种 git 用户: 1. 那些**频繁提交**且不太多想的人。 2. 那些**仔细变基**以打造干净历史的人。 频繁提交的人认为变基的人是在把时间浪费在无意义的活动上。细粒度的历史能反映开发实际发生的过程。 变基的人认为频繁提交的人又懒又粗心。只有拥有干净的历史,才有可能理解变更背后的意图。 ## 在堆叠拉取请求时 看看 HN 讨论(https://news.ycombinator.com/item?id=49112232),你可以看到频繁提交的人在庆祝。Steve Klabnik(https://news.ycombinator.com/item?id=49114492): > 这是多年来 GitHub 上最大的变化之一。我很高兴看到这样的东西被部署到世界上最大的代码托管平台之一,希望它能让许多开发者接触到他们以前甚至不知道的工作流程。 与此同时,变基的人感到困惑,为什么会有人想要这个。Insimwytim(https://news.ycombinator.com/item?id=49113869): > 我觉得很多人(以及整个行业)都在不必要地把事情复杂化。 ## 在合并拉取请求时 在工作中,我们也有类似的讨论:将拉取请求合并到主分支时,squash 是否是个好主意。 变基的人如果自己精心打造的历史被 squash 合并毁掉,会非常生气。他们更喜欢合并提交,这样每个提交都能被保留。 频繁提交的人喜欢 squash 合并,因为它让历史更干净、更容易阅读。虽然把分支上的每一步都保留为单独的提交可能有用,但主分支上并不需要这种混乱的历史。 ## 谁是对的? 就我个人而言,我更像一个变基派。然而,这需要纪律,而这在较大的组织中很难维持。如果没有非常严格地执行干净历史的要求,那么 git 历史最终会变得一团糟。根据破窗理论(https://en.wikipedia.org/wiki/Broken_windows_theory),它会变得更糟,团队的变基派最终会放弃。 因此,频繁提交似乎是更具韧性的做法,抵抗基本上是徒劳的。所以除非我对某个 git 仓库拥有权威,否则我会与混乱的历史和平共处。 有两种 git 用户:那些频繁提交的人,以及那些仔细变基的人。

相似文章

Git history 命令值得更多关注

Hacker News Top

文章重点介绍了新的 `git history` 命令及其 `fixup`、`reword` 和 `split` 子命令,这些命令提供了原子化且感知分支的提交历史编辑功能,带来了类似 jj 的益处,而无需切换版本控制系统。

Git 2.54 亮点速览

Lobsters Hottest

Git 2.54 带来全新的实验性 `git history` 命令,可在不碰工作区的情况下重写或拆分提交,另有 137 位贡献者带来的其他改进。