跳转至内容
  • 0 赞同
    1 帖子
    11 浏览
    R
    Git 2.54 于 4 月 20 日正式发布,来自 137 名贡献者(66 名首次参与)的提交合并进入这一版本,同时覆盖 2.53 的新特性。最大亮点是新增实验性命令 git history,提供 reword 与 split 两个子命令:git history reword <commit> 可直接在编辑器中修改任意历史提交的提交信息,并自动更新所有下游分支,全程不触碰工作区或暂存区,甚至支持裸仓库;git history split <commit> 则以类似 git add -p 的交互界面将一个提交拆分成两个,自动重写后代分支——该命令底层基于 git replay 的核心库,有意不支持含 merge commit 的历史、也不允许产生冲突,定位为"精准、非交互式历史改写"而非 rebase -i 的替代。另一重要特性是配置文件定义钩子:不再要求把脚本放入 .git/hooks/ 目录,可直接在 ~/.gitconfig 或系统级配置中以 [hook "name"] event = pre-commit 的形式声明钩子,多个钩子可绑定同一事件并按顺序执行,支持通过 hook.<n>.enabled = false 单独禁用,git hook list 可查看来源。 功能更新层面,git maintenance run 的默认维护策略由 gc 切换为 2.52 引入的 geometric——后者通过增量合并满足几何级数关系的 packfile,避免昂贵的全量 GC,同时保持 commit-graph 与 reflog 最新;git replay 新增原子引用更新(不再向 stdout 打印 update-ref 命令)、--revert 模式与根提交支持;git log -L 路由经标准 diff 管线,首次与 -S、-G、--word-diff、--color-moved 兼容;HTTP 传输新增 429 重试机制,支持 Retry-After 头与 http.retryAfter、http.maxRetries、http.maxRetryTime 配置;git rebase 新增 --trailer 选项可批量为所有被 rebase 的提交附加 trailer;git blame 支持 --diff-algorithm 参数;alias 命令名限制从 ASCII 字母数字放开至任意字符(通过 subsection 语法),使 “状態” 或 “hämta” 这样的本地语言别名成为可能;此外 MIDX 增量索引新增 compaction 支持,为长期运行的大型仓库提供更可持续的多层压缩。 GitHub Blog https://github.blog/open-source/git/highlights-from-git-2-54/