💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## 8.1 配置 Git Git 的配置分为三层,分别为系统(system),全局(global)和本地(local),对应的配置文件分别为 `/etc/gitconfig`,`~/.gitconfig`和 `.git/config` 。每层的配置都会覆盖掉上一层次的配置。 ### 8.1.1 **客户端基本配置** 依据个人的工作偏好进行的配置,通过 `man git-config`可以查看当前版本的 Git 支持哪些配置,也可以在 [http://git-scm.com/docs/git-config.html](http://git-scm.com/docs/git-config.html) 进行查看。 **core.editor** 默认情况下,Git 会调用环境变量(`$VISUAL`或`$EDITOR`)设置的任意文本编辑器,如果没有设置,会调用`vi`来创建和编辑提交以及标签信息。 **commit.template** 项指定为系统上某个文件的路径,当有新的提交时, Git 会使用该文件的内容作为提交的默认信息。 **core.pager** 该配置项指定 Git 运行诸如`log`和`diff`等命令所使用的分页器,默认用的是`less`,可以设置成空字符串,关闭该选项: ``` $ git config --global core.pager '' ``` **user.signingkey** 设置 GPG 签署密钥。 ``` $ git config --global user.signingkey <gpg-key-id> ``` 每次运行`git tag`命令时,即可直接签署标签,而无需定义密钥。 **core.excludesfile** 允许设置类似于全局生效的`.gitignore`文件。 ``` $ git config --global core.excludesfile [config_path] ``` **help.autocorrect** 在打错了一条命令时,Git 会尝试猜测意图,但不会执行它,而把`help.autocorrect`设置成 1,那么只要有一个命令被模糊匹配到了,Git 会自动运行该命令。 ### 8.1.2 Git 中的着色 Git 充分支持对终端内容着色。 **color.ui** 设置的默认值是`auto`,它会着色直接输出到终端的内容,可以设置成 `false` 来关闭着色,设置成`always`,来忽略掉管道和终端的不同,即在任何情况下着色输出。 **color.\*** 要想具体到哪些命令输出需要被着色以及怎样着色,需要用到和具体命令有关的颜色配置选项。 它们都能被置为`true`、`false`或`always`: ``` color.branch color.diff color.interactive color.status ``` 以上每个配置项都有子选项,它们可以被用来覆盖其父设置,以达到为输出的各个部分着色的目的 ``` # blue 前景色;black 背景色;bold 粗体 $ git config --global color.diff.meta "blue black bold" ``` * 颜色有:`normal`、`black`、`red`、`green`、`yellow`、`blue`、`magenta`、`cyan`或`white` * 字体有:`bold`、`dim`、`ul`(下划线)、`blink`、`reverse`(交换前景色和背景色) ### 8.1.3 外部的合并与比较工具 在安装好外部工具后,例如 P4Merge,编辑`~/.gitconfig`文件,添加以下各行: ``` [merge] tool = extMerge [mergetool "extMerge"] cmd = extMerge "$BASE" "$LOCAL" "$REMOTE" "$MERGED" trustExitCode = false [diff] external = extDiff ``` ### 8.1.4 格式化与多余的空白字符 **core.autocrlf** Windows 使用回车(CR)和换行(LF)两个字符来结束一行,而 Mac 和 Linux 只使用换行(LF)一个字符。Git 可以在提交时自动地把回车和换行转换成换行,而在检出代码时把换行转换成回车和换行: ``` $ git config --global core.autocrlf true ``` **core.whitespace** Git 预先设置了一些选项来探测和修正多余空白字符问题。它提供了六种处理多余空白字符的主要选项 —— 其中三个默认开启,另外三个默认关闭。 默认被打开的三个选项是:`blank-at-eol`,查找行尾的空格;`blank-at-eof`,盯住文件底部的空行;`space-before-tab`,警惕行头 tab 前面的空格。 默认被关闭的三个选项是:`indent-with-non-tab`,揪出以空格而非 tab 开头的行(可以用`tabwidth`选项控制它);`tab-in-indent`,监视在行头表示缩进的 tab;`cr-at-eol`,告诉 Git 忽略行尾的回车。 通过设置`core.whitespace`,可以让 Git 打开或关闭以逗号分割的选项。 要想关闭某个选项,可以在输入设置选项时不指定它或在它前面加个`-`。 ### 8.1.5 服务器端配置 **receive.fsckObjects** Git 能够确认每个对象的有效性以及 SHA-1 检验和是否保持一致,但这个操作很耗时,如果想在每次推送时都要求 Git 检查一致性,设置`receive.fsckObjects`为 true 来强迫它这么做: ``` $ git config --system receive.fsckObjects true ``` **receive.denyNonFastForwards** 禁用强制更新推送(force-pushes),可以设置`receive.denyNonFastForwards`: ``` $ git config --system receive.denyNonFastForwards true ``` **receive.denyDeletes** 禁止通过推送删除分支和标签: ``` $ git config --system receive.denyDeletes true ```