核心 Git 开发者如何配置 Git

几周前作者写了关于 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:设置默认分支名称,如maingit 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.enabledrerere.autoupdate:在rebase冲突时记录和解的前后状态,并自动重新应用。git config --global rerere.enabled truegit config --global rerere.autoupdate true
    • core.excludesfile:设置全局忽略文件路径。git config --global core.excludesfile ~/.gitignore
    • rebase.autoSquashrebase.autoStashrebase.updateRefs:在rebase时自动处理相关操作。git config --global rebase.autoSquash truegit config --global rebase.autoStash truegit 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的默认行为为rebasegit config --global pull.rebase true
    • core.fsmonitorcore.untrackedCache:运行文件系统监控器,加快git status速度,但可能占用资源。git config --global core.fsmonitor truegit config --global core.untrackedCache true

作者表示希望这对读者有用,了解了一些新的 Git 配置设置,这些设置大多应成为默认值,且 Git 社区对此也无争议。同时还有其他方式可以优化 Git 配置,如别名、外部工具等,但本文主要关注全局有用且简单的 Git 设置。

阅读 9
0 条评论