侧边栏壁纸
  • 累计撰写 379 篇文章
  • 累计创建 60 个标签
  • 累计收到 109 条评论

目 录CONTENT

文章目录
Git

Git 关于config文件的相关知识介绍和自定义Git

Z同学
2022-03-21 / 0 评论 / 1 点赞 / 537 阅读 / 3,703 字
温馨提示:
本文最后更新于 2022-03-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

git的一些安装和基本的配置比较简单,我们安装完毕后。经常会针对Git配置一些全局信息,或者围绕某个本地仓库做一些配置。例如配置项目提交的作者邮箱等信息。

那么,我们配置的各种信息是存在哪里呢?又有哪些配置是有效果的呢?本篇就是介绍git的关于config文件的一些知识。

1. config 是干什么的?

我们安装完毕Git之后,都会通过各种操作来定制我们本地的Git的环境,就类似于程序开发中的全局属性。

而配置完毕后这些Git环境的相关信息后。之后每次升级Git工具的版本时,我们配置的这些信息都会被保留并继续生效。

而这些相关的配置项,git是通过自带的git config工具进行统一管理和配置的。

所以:只要通过git config 命令进行操作的信息都是在配置Git本地环境。而且该内容配置完毕后,会在本仓库,本地全部仓库等不同级别进行生效。根据我们配置时进行的指令来决定不同的生效范围。

除了Git默认的配置项,我们也可以自定义各种配置项。在git提交或操作时使用。整个过程就叫做自定义Git配置。

1.1 config 文件的三个版本

上面说过,针对config 指令进行操作,会有不同的权限。其实主要就是因为我们操作完毕后的相关指令存储在哪个config文件中决定的。git主要有三个地方存储这些变量。

  • /etc/gitconfig:本地系统全部用户的通用配置。(这个文件就存储在本地Git的安装目录下的etc文件夹中)。通过 git config --system 操作后的配置就是修改和存储在该文件中。
  • .gitconfig:当前用户的通用配置。(这个文件其实就在我们本地用户文件夹中C:/User/zinyan/.gitconfig)。通过git config --global 操作后的配置就是修改和存储在该文件中。
  • .git/config:当前仓库的通用配置。(这个文件在本地仓库项目的.git/config文件中)。通过git config --local操作后的配置就是修改和存储在该文件中。

image-20220321155217457

我们每次提交的时候,如果该指令需要相关配置的话,就会按照上面的流程进行读取。也就是说如果最后.git/config文件中配置的项目,会覆盖前面两项配置的变量。如果没有就按照前一项文件配置的生效。

1.2 查找config 的配置文件

git可能安装在多个不同平台例如macOS,Linux等不同平台。那么我们如何知道每一种配置文件的路径呢?毕竟不同的操作系统它们的目录结构都不一样的。

很简单,通过指令:git config --list --show-origin。进行查询就可以了。我们如果当前是在一个本地仓库文件夹中,那么可以查询到三个文件夹。而如果不在本地仓库,而是在根目录。那么就只能查询到两个config配置文件了

示例:例如下面的我们就能够查询到这三个配置项文件了,同时还能列出这些配置项的内容。

image-20220321155858531

而我们在根目录下查询就只能得到:

image-20220321160228664

1.3 总结

到这里大家就能明白git config的相关配置了吧。不同的参数到底修改哪个文件配置了。这样如果出现了问题我们个人也知道该如何进行定位修改。不管如何配置这几个配置文件都大同小异。

2. config 存储些什么

2.1 用户信息 user

我们知道了config是用来干什么的,那么config之中可以存储些什么东西呢?其实我们用的最多也许就是用户信息了。

因为Git的每次提交都会需要用户名和邮箱信息,并写入到每次提交日志中。而这个数据的来源就是config中存储的。

$ git config --global user.name "zinyan"
$ git config --global user.email zinyan@126.com

通常大家会配置在当前用户角色的config之中。这样可以减少改动。

我们如果在项目目录下配置,可以省略--local 。默认就是修改当前项目的config配置。

user.nameuser.email 参数赋值而已。

2.2 文本编辑器 core-editro

我们使用Git输入信息时,Git会自动调用操作系统默认的文本编辑器。而我们如果想使用不同的文本编辑器例如 Emacs等。

可以通过以下命令进行配置(Mac 和Linux 系统上):

$ git config --global core.editor emacs

其实就是给core.editor 参数赋值为emacs而已。

而我们如果是Windows系统那么赋值就需要是该文本编译器的完整可执行路径。例如:

$ git config --global core.editor "C:\Program Files\Typora\Typora.exe"

2.3 自定义初始化模板commit.template

例如我们针对每次Git提交的日志有模板要求。那么就可以通过该项配置。在我们 运行git commit时会自动在编译器中配置目标内容。

$ git config --global commit.template ~/.gitmessage.txt

而gitmessage.txt 文件根据我们自己的需求可以进行配置内容。

2.4 自定义分页器 core.pager

git默认使用less进行分页器使用。主要就是打印log,或diff等命令产生的数据量过大。页面一页无法显示。就会默认使用less进行分页操作,让内容可以分页显示。

而我们可以设置该参数,在内容过多的时候仍然一页显示:

$ git config --global core.pager ''

设置为空值就是代表不使用分页器了。我们还可以使用其他的more,或我们喜欢的分页器。

小知识:q退出分页器,h显示帮助,b上一页,空格下一页

2.5 全局忽略配置 core.excludesfile

我们都知道,通过.gitignore文件可以配置忽略项。但是每次都通过项目提交时配置一下比较繁琐和低效。

我们可以将需要过滤的文件列一个清单例如:

image-20220321164358744

然后配置:(具体的路径根据我们存储的gitignore实际地址决定)

$ git config --global core.excludesfile ~/.gitignore

然后git就会将相关的文件统一添加为过滤了。

2.6 中断着色 color *

更多的关于color.*的相关操作都是在终端输出内容的着色处理。针对关键词和内容进行颜色标注,可以方便我们定位问题。

2.7 格式化换行符 core.autocrlf

主要针对不同操作系统,共同维护同一项目时,由于操作系统针对换行和空白符定义的不一致问题进行处理。

假如在 Windows 上写程序,而同伴用的是其他系统(macOS),你可能会遇到 CRLF 问题。 因 为 Windows 使用回车(CR)和换行(LF)两个字符来结束一行,而 macOS 和 Linux 只使用换行(LF)一个字 符。 虽然这是小问题,但它会极大地扰乱跨平台协作。许多 Windows 上的编辑器会悄悄把行尾的换行字符转换 成回车和换行, 或在用户按下 Enter 键时,插入回车和换行两个字符。 Git 可以在你提交时自动地把回车和换行转换成换行,而在检出代码时把换行转换成回车和换行。

如果是在 Windows 系统上,把core.autocrlf 设置成 true,这样在检出代码时,换行会被转换成回车和换行:

$ git config --global core.autocrlf true

针对空白符也有相关的配置项:core.whitespace。它可以分别监控行尾的空格(blank-at-eol),文件底部的空行(blank-at-eof),tab前面的空格(space-before-tab)。

还有更多的相关配置,这里就不详细展开了。有兴趣可以通过Git - 配置 Git (git-scm.com) 了解更多的配置。

3. 自定义config中的项目

上面看到的,都是一些git配置好的项目。那么我们如果配合一些其他工具等使用时。能否配置自己需要的项目呢?

当然是可以的。通过add参数就可以配置了

3.1 添加配置项 add

格式内容:git config [--local|--global|--system] --get section.key value

示例:

$ git config --global --add zinyan.name zinyan

我们可以主动添加一个项目为zinyan。然后它的key叫做name,值是zinyan

3.2 删除配置项 unset

格式内容:git config [--local|--global|--system] --unset section.key

示例:

$ git config --global --unset zinyan.name 

ps: 这些都是通过命令的形式处理,我们如果实在不会处理这个命令的操作。我们可以直接通过文本文档修改相应的config文件。

4. 查询

最后,再重新汇总一下关于config的查询。

$ git config --list --show-origin  //查询
$ git config --show-origin user.name     //查询指定的项目参数值, 例如查询user.name 的最终生效值

到这里,针对git config的相关知识就差不多了。

1

评论区