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