Git 用了快 20 年,早就成了开发者的默认装备——开机就启动,但时不时卡你一下。

改历史记录?git rebase -i 确实强,但强得像一把没护手的电锯,用得好是神器,手一抖就是事故。
团队同步 hooks?靠微信群发文件、靠新人手册里加一段"记得手动复制到 .git/hooks"。
仓库维护?git gc 越跑越慢,
pack 文件默默膨胀,你明知道有问题,但懒得碰。
这些问题不是没人提,是提了太多年,大家都麻了。
直到 Git 2.54。

最重磅:终于不用 rebase -i 改历史了
git history 这个新命令,可能是 Git 近三年来最实用的功能。
改提交信息:git history reword
以前想改一条三天前的 commit message,流程是这样的:
git rebase -i HEAD~5
# 找到那条 commit,把 pick 改成 reword
# 保存,等编辑器弹出来改 message
# 如果中间出冲突,还要解决冲突继续 rebase
现在:
git history reword abc1234
Done。
不需要交互式编辑器,不需要手动编辑 todo 列表,不会动你的工作区和暂存区。
甚至连 bare 仓库里都能直接用。
拆分提交:git history split
以前把一个大 commit 拆成两个,堪称 Git 十大噩梦之一。
典型场景:你一次性提交了"修复登录 Bug + 优化样式",但 review 时要求拆开。
以前的流程:
git rebase -i HEAD~3
# 找到那个 commit,把 pick 改成 edit
# 保存后 rebase 停在那个 commit
git reset HEAD~
git add -p # 手动选要保留的代码块
git commit -m "修复登录 Bug"
git add . # 剩下的
git commit -m "优化样式"
git rebase --continue
# 如果后面有冲突还要解决...
现在:
git history split abc1234
执行后会进入交互式界面,Git 会逐个展示这个 commit 里的代码块(hunk),你按 y 选进第一个新 commit,按 n 留给第二个。
选完后自动帮你拆成两个
commit,后续分支的引用也会自动更新。
如果你拆到一半想反悔,按 q 退出,整个操作会干净地回滚,不会留下半成品状态。
这两个功能目前还是实验性的,但已经可以直接用了。
如果你经常需要整理提交历史,这绝对是生产力核弹。
Hooks 终于能进配置文件了
以前 Git hooks 最大的问题是:没法共享。
.git/hooks 目录不在版本控制里,团队里每个人 clone 完仓库都要手动复制 hooks 文件,CI 环境里更是没法统一配置。
很多人干脆放弃
hooks,或者写一堆 wrapper 脚本来 workaround。
Git 2.54 终于支持在配置文件里定义 hooks:
[hook "pre-commit"]
command = npm test
[hook "linter"]
event = pre-commit
command = eslint .
这意味着 hooks 可以写进 .gitconfig、仓库的 config 文件,甚至系统级的
/etc/gitconfig。
同一事件可以挂多个 hooks,按配置顺序执行。
对团队来说,这等于 hooks 终于"可配置、可共享、可版本管理"了。
对自动化工作流和 AI Agent 来说,这也是个大利好——再也不用去碰 .git/hooks 那个黑盒目录了。
性能暴增
如果你管过大型仓库(尤其是 monorepo),一定经历过 git gc 越跑越慢、
pack 文件越来越大的痛苦。
Git 2.54 把 geometric repacking 变成了 git maintenance run 的默认策略:
git maintenance run
# 现在默认使用 geometric repacking,无需额外配置
简单说,它不再每次都做全量整理,而是按几何级数增量合并 pack 文件。实测下来,大型仓库的维护时间明显缩短,内存占用也更友好。
这个改动对普通用户是无感的——它就在后台默默运行,但你的仓库会越来越"健康",而不是越来越"臃肿"。
其他值得关注的改进
git add -p 更聪明了
交互式暂存时,按
J/K 导航会显示你对每个代码块的选择状态(已接受 / 已跳过),不用凭记忆操作。还加了 --no-auto-advance 选项,处理完一个文件不会自动跳到下一个,方便你整体看完再确认。
git rebase --trailer 批量加签名
以前给一串 commit 批量加 Reviewed-by: 要写脚本,现在一条命令搞定:
git rebase --trailer "Reviewed-by: 张三 "
HTTP 429 自动重试
CI 拉仓库遇到限流不再直接崩,Git 会自动按服务器的 Retry-After 头部重试,还能配重试次数和间隔。
Unicode 别名
Git alias 终于支持中文等非 ASCII 字符了。虽然是个小改动,但对非英语开发者来说,体验友好很多。
写在最后
Git 2.54 的改动方向很明确:降低使用门槛,拥抱现代开发 workflow。
git history 和配置化 hooks 这两个核心功能,明显是在回应社区对"Git 太难用"的长期抱怨。
事实上,很多设计思路能看到 Jujutsu(jj)这类新一代版本控制工具的影子——Git 官方终于开始认真考虑 DX(开发者体验)了。
对于还在用 Git 2.30、2.40 的老版本用户,这次更新值得升级。
所有新特性都向后兼容,不会破坏现有工作流。
升级方式:
Git 最新版地址:https://git-scm.com/