客户端的配置

#================================================================
	作用域
		--system 是操作所有用户共享的/etc/gitconfig
		--global 是操作当前用户所有仓库共享的~/.gitconfig
		--local 是操作当前仓库的.git/confg (优先级最高, 会覆盖其它的配置)
			还可以--worktree \\-f, --file <file> \\--blob <blob-id>
	
	添加配置可以使用git config 命令加配置信息
	修改配置
		可以重新添加(自动覆盖)
		--rename-section      rename section: old-name new-name
		--replace-all         replace all matching variables: name value [value_regex]
	删除配置
		--unset               remove a variable: name [value-regex]
    --unset-all           remove all matches: name [value-regex]
    --remove-section      remove a section: name
	查看某个配置的信息
		--get                 get value: name [value-regex]
    --get-all             get all values: key [value-regex]
    --get-regexp          get values for regexp: name-regex [value-regex]
    --get-urlmatch        get value specific for the URL: section[.var] URL
		-l, --list            list all
    -e, --edit            open an editor
#================================================================

# 配置个人信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

# 配置编辑器
$ git config --global core.editor emacs
# 自定义打开编辑器时显示的内容
$ git config --global commit.template ~/.templateFileName.txt

# 自定义翻页器(日志什么的超过一页时的处理方式)
$ git config --global core.pager ''

# 创建标签时自动签署
$ git config --global user.signingkey <gpg-key-id>

# 配置所有仓库都要忽略的文件
$ git config --global core.excludesfile ~/.gitignore_global
	# 忽略规则像本地仓库那样, 配置在一个文件中, 然后让Git 读取这个文件

# 打错了命令, Git 会预估正确的, 配置为如果预估的是唯一, 则自动执行
$ git config --local autocorrect 1
	# autocorrect, 有这个存在像相当于说: 自动执行
	# 后面你的数字, 是延迟执行时间, 50 等于5秒; 1 等于0.1秒

# Git 会对终端的输出加上颜色, 改变或关闭颜色
$ git config --global color.ui false # 关闭
$ git config --global color.diff.meta "blue black bold" # 前景色\\背景色\\字体属性

# 指定合并或比较工具
# Git 预设了很多工具配置, 无需自己配置了, 预设工具列表:
$ git mergetool --tool-help
$ git config --global merge.tool kdiff3 # 指定使用预设的工具

# 自动处理换行符
	# Windows 使用回车(CR)和换行(LF)两个字符来结束一行
	# Mac 和 Linux 只使用换行(LF)一个字符
$ git config --global core.autocrlf true # 提交时自动地把CRLF 换成LF, 检出时还原
$ git config --global core.autocrlf input # 提交时换成LF, 检出不还原
$ git config --global core.autocrlf false # 不处理

# 自动处理多余空白字符
$ git config --global core.whitespace \\
    trailing-space,space-before-tab,indent-with-non-tab
	# 默认打开的
		# blank-at-eol,查找行尾的空格
		# blank-at-eof,盯住文件底部的空行
		# space-before-tab,警惕行头 tab 前面的空格
	# 默认关闭的
		# indent-with-non-tab,揪出以空格而非 tab 开头的行(你可以用 tabwidth 选项控制它)
		# tab-in-indent,监视在行头表示缩进的 tab
		# cr-at-eol,告诉 Git 忽略行尾的回车
	# 多个选项用逗号隔开
$ git apply --whitespace=warn <patch> # 应用补丁时警告空白字符问题
$ git apply --whitespace=fix <patch> # 应用补丁时自动修复空白字符问题
$ git rebase --whitespace=fix # 变基时自动修复空白字符问题

服务端的配置

# 每次推送都强制Git 检查一致性(确认每个对象的有效性以及SHA-1 检验和是否保持一致, 很耗时)
$ git config --system receive.fsckObjects true

# 只允许Fast-Forward 合并
$ git config --system receive.denyNonFastForwards true
$ git config --system receive.denyDeletes true