用git config
配置 Git,要做的第一件事就是设置名字和邮箱地址:
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
从现在开始,你会了解到一些类似以上但更为有趣的设置选项来自定义 Git。
先过一遍第一章中提到的 Git 配置细节。Git 使用一系列的配置文件来存储你定义的偏好,它首先会查找/etc/gitconfig
文件,该文件含有 对系统上所有用户及他们所拥有的仓库都生效的配置值(译注:gitconfig是全局配置文件), 如果传递--system
选项给git config
命令, Git 会读写这个文件。
接下来 Git 会查找每个用户的~/.gitconfig
文件,你能传递--global
选项让 Git读写该文件。
最后 Git 会查找由用户定义的各个库中 Git 目录下的配置文件(.git/config
),该文件中的值只对属主库有效。 以上阐述的三层配置从一般到特殊层层推进,如果定义的值有冲突,以后面层中定义的为准,例如:在.git/config
和/etc/gitconfig
的较量中,.git/config
取得了胜利。虽然你也可以直接手动编辑这些配置文件,但是运行git config
命令将会来得简单些。
Git 能够识别的配置项被分为了两大类:客户端和服务器端,其中大部分基于你个人工作偏好,属于客户端配置。尽管有数不尽的选项,但我只阐述 其中经常使用或者会对你的工作流产生巨大影响的选项,如果你想观察你当前的 Git 能识别的选项列表,请运行
$ git config --help
git config
的手册页(译注:以man命令的显示方式)非常细致地罗列了所有可用的配置项。
Git默认会调用你的环境变量editor定义的值作为文本编辑器,如果没有定义的话,会调用Vi来创建和编辑提交以及标签信息, 你可以使用core.editor
改变默认编辑器:
$ git config --global core.editor emacs
现在无论你的环境变量editor被定义成什么,Git 都会调用Emacs编辑信息。
如果把此项指定为你系统上的一个文件,当你提交的时候, Git 会默认使用该文件定义的内容。 例如:你创建了一个模板文件$HOME/.gitmessage.txt
,它看起来像这样:
subject line
what happened
[ticket: X]
设置commit.template
,当运行git commit
时, Git 会在你的编辑器中显示以上的内容, 设置commit.template
如下:
$ git config --global commit.template $HOME/.gitmessage.txt
$ git commit
然后当你提交时,在编辑器中显示的提交信息如下:
subject line
what happened
[ticket: X]
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: lib/test.rb
#
~
~
".git/COMMIT_EDITMSG" 14L, 297C
如果你有特定的策略要运用在提交信息上,在系统上创建一个模板文件,设置 Git 默认使用它,这样当提交时,你的策略每次都会被运用。
core.pager指定 Git 运行诸如log
、diff
等所使用的分页器,你能设置成用more
或者任何你喜欢的分页器(默认用的是less
), 当然你也可以什么都不用,设置空字符串:
$ git config --global core.pager ''
这样不管命令的输出量多少,都会在一页显示所有内容。
如果你要创建经签署的含附注的标签(正如第二章所述),那么把你的GPG签署密钥设置为配置项会更好,设置密钥ID如下:
$ git config --global user.signingkey <gpg-key-id>
现在你能够签署标签,从而不必每次运行git tag
命令时定义密钥:
$ git tag -s <tag-name>
正如第二章所述,你能在项目库的.gitignore
文件里头用模式来定义那些无需纳入 Git 管理的文件,这样它们不会出现在未跟踪列表, 也不会在你运行git add
后被暂存。然而,如果你想用项目库之外的文件来定义那些需被忽略的文件的话,用core.excludesfile
通知 Git 该文件所处的位置,文件内容和.gitignore
类似。
该配置项只在 Git 1.6.1及以上版本有效,假如你在Git 1.6中错打了一条命令,会显示:
$ git com
git: 'com' is not a git-command. See 'git --help'.
Did you mean this?
commit
如果你把help.autocorrect
设置成1(译注:启动自动修正),那么在只有一个命令被模糊匹配到的情况下,Git 会自动运行该命令。
Git能够为输出到你终端的内容着色,以便你可以凭直观进行快速、简单地分析,有许多选项能供你使用以符合你的偏好。
Git会按照你需要自动为大部分的输出加上颜色,你能明确地规定哪些需要着色以及怎样着色,设置color.ui
为true来打开所有的默认终端着色。
$ git config --global color.ui true
设置好以后,当输出到终端时,Git 会为之加上颜色。其他的参数还有false和always,false意味着不为输出着色,而always则表明在任何情况下都要着色,即使 Git 命令被重定向到文件或管道。Git 1.5.5版本引进了此项配置,如果你拥有的版本更老,你必须对颜色有关选项各自进行详细地设置。
你会很少用到color.ui = always
,在大多数情况下,如果你想在被重定向的输出中插入颜色码,你能传递--color
标志给 Git 命令来迫使它这么做,color.ui = true
应该是你的首选。
color.*
想要具体到哪些命令输出需要被着色以及怎样着色或者 Git 的版本很老,你就要用到和具体命令有关的颜色配置选项,它们都能被置为true
、false
或always
:
color.branch
color.diff
color.interactive
color.status
除此之外,以上每个选项都有子选项,可以被用来覆盖其父设置,以达到为输出的各个部分着色的目的。例如,让diff输出的改变信息以粗体、蓝色前景和黑色背景的形式显示:
$ git config --global color.diff.meta “blue black bold”
你能设置的颜色值如:normal、black、red、green、yellow、blue、magenta、cyan、white,正如以上例子设置的粗体属性,想要设置字体属性的话,可以选择如:bold、dim、ul、blink、reverse。
如果你想配置子选项的话,可以参考git config
帮助页。
文章转载自:http://www.open-open.com/lib/view/open1328070404827.html