Git 软件有许多可以去设置的参数,如用户名,用户邮箱,Git 的服务器等,这些参数的设置可以通过 git config 命令进行设置。而设置的参数会保存在相应的配置文件中。
1. /etc/gitconfig
:该文件存放系统级的参数。该文件是系统级的文件,只有root用户可以设置,其中包括的是适用于所有用户的参数设置。如果要设置系统级参数,使用 git config
的时候需要有 root 权限,并且加上选项 --system
。
2. ~/.gitconfig
或者 ~/.config/git/config
:该文件中保存本用户的通用参数,不同的项目如果没有项目特殊性的参数则都会读取该文件中的参数。该文件是全局参数的配置文件。设置全局参数,需要在 git config
加上--global
选项。
3. .git/config
:在项目目录的 .git
目录下面有项目的 config
文件。该文件中存储的参数是该项目独有的参数。设置项目自己的参数时候,只需要 git config
命令即可。
三个级别的配置文件的优先级不一样,项目自己的配置文件的优先级要高于用户全局配置文件,而用户全局配置文件的优先级要高于系统级的配置文件。如果某个参数在项目自己的 config 文件中和用户全局配置文件 ~/.gitconfig
文件中都有,但是值不一样,则会优先选择使用项目自己的 config 文件中的值。
设置用户
git config --global user.name "Er Wang"
git config --global user.email wanger@microsoft.com
这样就会在 ~/.gitconfig
文件中看到:
[user]
email = wanger@microsoft.com
name = Er Wang
如果设置项目级别或者系统级别,也会在相应的配置文件中找到相应的值。
设置编辑器
因为 git 在使用中需要对信息进行编辑,就需要编辑器的支持。如果没有设置编辑器的话,git 会使用系统默认 编辑器,一般类 Unix 系统的默认编辑器是 vim。如果需要设置编辑器,也可以通过 git config 进行。
git config --global core.editor emacs
这样就可以把编辑器设置为 Emacs。相应也可以在配置文件中看到设置。
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
editor = emacs
显示设置的参数
如果需要显示当前的参数设置,可以使用 git config
命令加上参数名。
git config core.editor
# emacs
如果需要显示所有的参数,可以使用 --list
选项。
git config --list
而如果只想要显示项目特有参数(local)或者用户全局参数(global),又或者系统参数(system)也可以通过加上相应选项来实现。
如显示项目特有参数:
git config --list --local
参数文件
因为 git
的参数都是存于前面提到的三个文件中,也可以直接手动或者程序去修改文件,从而改变参数。
使用命令 git config --help
可以列出 git config
的帮助文档,其中包含了所有可以设置的参数的介绍。Git 的参数基本可以分为客户端的设置和服务器端的设置。常用参数的介绍如下:
客户端常用配置
core.editor
: 设置基本的编辑器,默认是vim。commit.template
:可以设置在 commit 时候信息的模板,指定该模板的路径。core.pager
:制定 Git 在显示更多内容的时候的分页程序,默认的是 less,可以设置为其他程序。user.signingkey
:设置签名所用的密钥。core.excludesfile
:指定一个包含有不要进入git的文件名信息的文件。与 .gitignore 文件作用一样。 还可以指定终端中显示的颜色:color.ui
:所有的操作是否显示颜色,可以选择 true, false或者 always。color.branch
:指定 branch 操作是否显示颜色,可以选择 true, false或者 always。color.diff
:指定 diff 操作是否显示颜色,可以选择 true, false或者 always。color.interactive
:指定 interactive 操作是否显示颜色,可以选择 true, false或者 always。color.status
:指定 interactive 操作是否显示颜色,可以选择 true, false或者 always。 这些都有自选项,可以覆盖父选项的值。
服务器常用配置
receive.fsckObjects
:可以设置是否需要每次与服务器交换数据都检查文件一致性,可以选择设置为 true 或 false。设置为 true 则会强制每次都检查,相对比较耗费时间。receive.denyDeletes
:设置不许用户删除服务器上的分支。可以设置为 true,即不允许删除,或者 false, 允许删除。