几周前作者写了关于 Git 的help.autocorrect设置及其十进制值起源的奇怪故事。这让作者开始思考其他大多数人可能不知道且默认设置可能应不同的git config设置。
在本文中,作者介绍了一些可能不为人知的 Git 配置设置,包括:
Clearly Makes Git Better:
branch.sort:按最近提交日期排序分支列表,而非按字母顺序,使顶部更有趣。git config --global branch.sort -committerdatecolumn.ui:以列格式显示分支名称,可在屏幕上显示更多内容。git config --global column.ui autotag.sort:按版本号排序标签,而不是按字母顺序。git config --global tag.sort version:refnameinit.defaultBranch:设置默认分支名称,如main。git config --global init.defaultBranch maindiff.algorithm:使用histogram算法进行git diff,比默认的myers算法更智能。git config --global diff.algorithm histogramdiff.colorMoved:在git diff中显示移动代码的不同颜色,与添加和删除的行区分开。git config --global diff.colorMoved plaindiff.mnemonicPrefix:在git diff头输出中用i/(索引)、w/(工作目录)或c/(提交)替换a/和b/。git config --global diff.mnemonicPrefix truediff.renames:检测文件是否重命名。git config --global diff.renames true
Why the Hell Not?:
help.autocorrect:默认不猜测输入错误的命令,改为猜测并提示。git config --global help.autocorrect promptcommit.verbose:在git commit时将整个diff输出放入提交消息中,提供更多上下文。git config --global commit.verbose truererere.enabled和rerere.autoupdate:在rebase冲突时记录和解的前后状态,并自动重新应用。git config --global rerere.enabled true,git config --global rerere.autoupdate truecore.excludesfile:设置全局忽略文件路径。git config --global core.excludesfile ~/.gitignorerebase.autoSquash、rebase.autoStash和rebase.updateRefs:在rebase时自动处理相关操作。git config --global rebase.autoSquash true,git config --global rebase.autoStash true,git config --global rebase.updateRefs true
A Matter of Taste:
merge.conflictstyle:在合并冲突时添加基础块的显示,可根据个人喜好选择。git config --global merge.conflictstyle zdiff3(注意 Git 2.35 之前版本使用diff3)pull.rebase:设置git pull的默认行为为rebase。git config --global pull.rebase truecore.fsmonitor和core.untrackedCache:运行文件系统监控器,加快git status速度,但可能占用资源。git config --global core.fsmonitor true,git config --global core.untrackedCache true
作者表示希望这对读者有用,了解了一些新的 Git 配置设置,这些设置大多应成为默认值,且 Git 社区对此也无争议。同时还有其他方式可以优化 Git 配置,如别名、外部工具等,但本文主要关注全局有用且简单的 Git 设置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。