git config
在本文档中,我们将深入了解 git config
命令。我们简要讨论了 git config
的用法(见设置存储库页面)。git config
命令是一个方便的函数,用于在全局或本地项目级别上设置 Git 配置值。这些配置级别对应于 .gitconfig
文本文件。执行 git config
将修改配置文本文件。我们将介绍常见的配置设置,例如电子邮件、用户名和编辑器。我们将讨论 Git 别名,它允许您为常用的 Git 操作创建快捷方式。熟悉 git config
和各种 Git 配置设置将有助于您创建强大、自定义的 Git 工作流程。
使用
git config
最基本的用例是使用配置名称调用,这将显示该名称的设置值。配置名称是以点分隔的字符串,根据其层次结构由“部分”和“键”组成。例如:user.email
git config user.email
在此示例中,电子邮件是用户配置块的子属性。这将返回 Git 将与本地创建的提交关联的配置电子邮件地址(如有)。
git 配置级别和文件
进一步讨论 git config
的使用之前,我们先花点时间介绍一下配置级别。git config
命令可以接受参数来指定要在哪个配置级别上操作。以下配置级别可用:
相关资料
Git 分支
查看解决方案
了解 Bitbucket Cloud 的 Git
--local
默认情况下,如果没有传递配置选项,git config
将写入本地级别。本地级别配置应用于调用 git config
的上下文存储库。本地配置值存储在可以在代码存储库的 .git 目录中找到的文件中:.git/config
-
--global
全局级别配置特定于用户,这意味着它适用于操作系统用户。全局配置值存储在位于用户主目录中的文件中。unix 系统上的 ~ /.gitconfig
和 Windows 上的 C:\Users>\
-
--system
系统级配置应用于整个计算机。这涵盖了操作系统上的所有用户和所有代码存储库。系统级配置文件位于系统根路径外的 gitconfig
文件中。unix 系统上的 $(prefix)/etc/gitconfig
。在 Windows 上,这个文件可以在 Windows XP 上的 C:\Documents and Settings\All Users\Application Data\Git\config
中找到,也可以在 Windows Vista 及更高版本上的 C:\ProgramData\Git\config
中找到。
因此,配置级别的优先级顺序是:本地、全局、系统。这意味着在寻找配置值时,Git 将从本地级别开始,然后上升到系统级别。
写一个值
在了解 git config
后,让我们来看一个写了值的例子:
git config --global user.email "your_email@example.com"
此示例将值 your_email@example.com
写入配置名称 user.email
。它使用 --global
标记,因此该值是为当前操作系统用户设置的。
git config editor - core.editor
许多 Git 命令会启动文本编辑器来提示进一步输入。git config
最常见的用例之一是配置 Git 应该使用哪个编辑器。下面列出了常用编辑器和匹配的 git config
命令的列表:
编辑器 | 配置命令 |
---|---|
Atom | 配置命令 |
emacs | 配置命令 |
nano | 配置命令 |
vim | 配置命令 |
Sublime Text (Mac) | 配置命令 |
Sublime Text(Win,32 位安装) | 配置命令 |
Sublime Text(Win,64 位安装) | 配置命令 |
Textmate | 配置命令 |
合并工具
如果发生合并冲突,Git 将启动“合并工具”。默认情况下,Git 使用常见 Unix 差异程序的内部实现。内部 Git 差异是一个最小的合并冲突查看器。有许多外部第三方合并冲突解决方案可供改用。有关各种合并工具和配置的概述,请参阅我们的指南,了解使用 Git 解决冲突的技巧和工具。
git config --global merge.tool kdiff3
彩色输出
Git 支持彩色终端输出,这有助于快速读取 Git 输出。您可以自定义 Git 输出以使用个性化的颜色主题。git config
命令用于设置这些颜色值。
color.ui
这是 Git 颜色的主变量。将其设置为 false 将禁用 Git 的所有彩色终端输出。
$ git config --global color.ui false
默认情况下,color.ui
设置为 auto,这会将颜色应用于即时终端输出流。如果输出流重定向到文件或通过管道传送到另一个流程,则自动设置将省略颜色编码输出。
您可以将 color.ui
值设置为 always,这也将在将输出流重定向到文件或管道时应用颜色编码输出。这可能会无意中造成问题,因为接收管道可能不需要使用颜色编码的输入。
Git 颜色值
除了 color.ui
外,还有许多其他细度颜色设置。就像 color.ui
一样,这些颜色设置都可以设置为 false、auto 或 always。这些颜色设置也可以设置特定的颜色值。支持的颜色值包括:
- 正常的
- 黑色
- 红色
- 绿色
- 黄色
- 蓝色
- magenta
- cyan
- 白色
也可以将颜色指定为十六进制颜色代码,例如 #ff0000 或 ANSI 256 颜色值(如果您的终端支持)。
Git 颜色配置设置
1. color.branch
- 配置 Git 分支命令的输出颜色
2. color.branch.
<slot
>
- 此值也适用于 Git 分支输出。<
slot
> 是其中之一:- 1. current:当前分支
- 2. local:本地分支
- 3. remote:refs/remotes 中的远程分支引用
- 4. upstream:上游跟踪分支
- 5. plain:任何其他引用
3. color.diff
- 将颜色应用于
git diff
、git log
和git show
输出
4. color.diff
.<slot
>
- 在
color.diff
下配置一个 <slot
> 值会告诉 git 在补丁的哪一部分使用特定的颜色。- 1. context:差异的上下文文本。Git 上下文是差异或补丁中显示的用于突出显示更改的文本内容行。
- 2. plain:上下文的同义词
- 3. meta:对差异的元信息应用颜色
- 4. frag:将颜色应用于“块标题”或“块标题中的函数”
- 5. old:对差异中移除的行应用颜色
- 6. new:为差异中添加的行上色
- 7. commit:在差异中使用颜色提交标题
- 8. whitespace:为差异中的任何空格错误设置颜色
5. color.decorate.
<slot
>
- 自定义
git log --decorate
输出的颜色。支持的 <slot
> 值为:branch
、remoteBranch
、tag
、stash
或HEAD
。它们分别适用于本地分支、远程跟踪分支、标记、隐藏的更改和HEAD
。
6. color.grep
- 将颜色应用于 git grep 的输出。
7. color.grep.
<slot
>
- 也适用于 git grep。<
slot
> 变量指定 grep 输出的哪一部分要应用颜色。- 1. context:上下文行中的文本不匹配
- 2. filename:文件名前缀
- 3. function:函数名称行
- 4. linenumber:行号前缀
- 5. match:匹配文本
- 6. matchContext:匹配上下文行中的文本
- 7. matchSelected:匹配选定行中的文本
- 8. selected:未匹配选定行中的文本
- 9. separator:一行中字段之间(:、-和 =)和块 (--) 之间的分隔符
8. color.interactive
- 此变量为交互式提示和显示应用颜色。例子有
git add --interactive
和git clean --interactive
9. color.interactive.<slot
>
- 可以指定 <
slot
> 变量来定位更具体的“交互输出”。可用的 <slot
> 值有:prompt、header、help、error,每个值都作用于相应的交互输出。
10. color.pager
- 使用分页器时启用或禁用彩色输出
11. color.showBranch
- 启用或禁用 git show branch 命令的颜色输出
12. color.status
- 一个布尔值,启用或禁用 Git 状态的颜色输出
13. color.status.<
slot
>
用于为指定的 git 状态元素指定自定义颜色。<slot
> 支持以下值:
1. header
- 以状态区域的标题文本为目标
2. added or updated
- 两个目标文件均已添加但未提交
3. changed
- 定位已修改但未添加到 git 索引的文件
4. untracked
- 将 Git 未跟踪的文件作为目标
5. branch
- 将颜色应用于当前分支
6. nobranch
- 显示“无分支”警告的颜色
7. unmerged
- 为有未合并更改的文件上色
别名
您可能熟悉操作系统命令行中的别名概念,如果不熟悉,它们是自定义快捷方式,用于定义哪个命令将扩展为更长的命令或组合命令。别名可以节省键入常用命令的时间和精力。Git 提供了自己的别名系统。Git 别名的一个常见用例是缩短提交命令。Git 别名存储在 Git 配置文件中。这意味着您可以使用 git config
命令来配置别名。
git config --global alias.ci commit
此示例为 git commit
命令创建了 ci 别名。然后您可以通过执行 git ci
来调用 git commit
。别名还可以引用其他别名来创建强大的组合。
git config --global alias.amend ci --amend
此示例创建了一个别名 amend,它将 ci 别名合并为一个使用 --amend flag
的新别名。
格式化和空格
Git 有多个“空白”功能,可以将其配置为在使用 git diff 时突出显示空白问题。将使用配置的颜色 color.diff.whitespace
突出显示空白问题
默认情况下,以下功能处于启用状态:
blank-at-eol
突出显示行尾处的孤立空格space-before-tab
突出显示缩进行时出现在制表符字符之前的空格字符blank-at-eof
突出显示插入到文件末尾的空行
默认情况下,以下功能处于禁用状态
indent-with-non-tab
突出显示使用空格而不是制表符缩进的行tab-in-indent
将初始制表符缩进突出显示为错误trailing-space
是 blank-at-eol 和 blank-at-eof 的简写cr-at-eol
强调了行尾处的回车符tabwidth=
定义一个制表符占用多少个字符位置。默认值为 8。允许的值范围为 1-63
摘要
在这篇文章中,我们介绍了 git config
命令的用法。我们讨论了该命令如何成为在文件系统上编辑原始 git config
文件的理想方法。我们研究了配置选项的基本读取和写入操作。我们了解了常见的配置模式:
- 如何配置 Git 编辑器
- 如何覆盖配置级别
- 如何重置配置默认值
- 如何自定义 git 颜色
总的来说,git config
是一个辅助工具,它提供了在磁盘上编辑原始 git config
文件的快捷方式。我们深入介绍了个人定制选项。Git 配置选项的基础知识是设置存储库的先决条件。有关基础知识的演示,请参阅我们的指南。
分享此文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。