Git 2.56 于 9 月 28 日发布。GitHub 在真实 monorepo 上测出 merge-base 搜索在某些场景下快 70 倍。
为什么快这么多
merge-base 搜索现在在某一侧历史走完后就停止遍历。以前即使答案已经确定,也会继续走完两边。path-walk repack 也支持了 bitmap 和 delta island。
git add --resolved
这个命令会拒绝暂存仍然包含冲突标记的文件。做过大型合并的人都知道,忘记删掉 <<<<<<< 就把文件提交了,是个经典事故。这条命令把它变成了机器可检查的。
git branch --delete-merged
批量清理已合并分支。以前要自己写 shell 循环加 grep,现在是内建的。仓库里堆积几十个已合并分支的情况很常见,清理一次能让 git branch 的输出重新变得可读。
git history drop(实验性)
这个要谨慎。它是实验特性,动的是历史,别在没备份的仓库上试。
另一个值得注意的
Git 2.56 之外,jj 0.46.0 支持通过创建 Git worktree 来并置二级工作区,jj git push 可以一次推多个 remote。如果你在多 remote 的场景(比如同时推内网和 GitHub),这条能省不少事。
实践建议
先升到 2.56 跑一周,确认没有行为差异再推广。新命令里 git add --resolved 最值得立刻用起来,可以直接加进提交前的检查脚本。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。