git config多用户配置 - someoneHere/blog GitHub Wiki
在每一次git提交的时候,提交的记录里都会带上用户名及邮箱信息,这个信息不是在github或者gitlab上设置的,而是设置于我们的电脑中。
这在所有平台都使用同一套用户信息的时候是可以正常使用的,但有时我们需要在不同平台,甚至不同的项目中使用不同的用户信息(比如在公司gitlab使用真实姓名和公司邮箱,在github上使用网名和个人邮箱),那就需要不同的设置方案了。
下面分别介绍全局配置、按项目配置和按文件目录配置三种git配置方法。
这是每次安装git后都会提示我们设置的,设置内容存于~/.gitconfig
文件中,格式如下:
[user]
name = youName
email = [email protected]
当项目无特殊配置时,就会取这个文件中的设置为提交信息。
在git安装后我们可以通过以下指令来查询、修改全局配置:
git config --global user.name // 查询全局用户名
git config --global user.name youName // 修改全局用户名
git config --global user.email // 查询全局邮箱
git config --global user.email [email protected] // 修改全局邮箱
在每个git项目下,可以针对这个项目进行单独设置,这部分设置存于项目根目录的.ssh/config
文件中。
当有项目设置时,取项目设置的内容,没有时才取全局配置。
我们也可以通过指令的方式来查询修改项目配置,其实就是全局配置的指令去掉--global
而已:
git config user.name // 查询项目用户名
git config user.name youName // 修改项目用户名
git config user.email // 查询项目邮箱
git config user.email [email protected] // 修改项目邮箱
用项目配置的方法虽然可以实现不同项目配置不同信息,但每个项目都配置一遍就太麻烦了,而且会经常出现漏配的情况,有把公司信息暴露到公共空间中风险。
使用git的Conditional Includes
可以解决这个问题。
Conditional Includes
可以针对文件夹来配置,配置方法如下:
在~/.gitconfig
添加如下代码:
## 如果是存放私人项目的文件夹,则采用另外的配置
[includeIf "gitdir:path/to/you/dir/"]
path = ~/.gitconfig_self
gitdir:
后面设置的是你想设置的文件夹目录,使用的是glob匹配模式,记得要以/
结尾,否则不会生效(以/
结尾,**
会被自动添加上,比如you/dir/
会变成 you/dir/**
,这样才能生效到所有子文件夹)。
path
的值是新配置的文件路径,我这里和全局配置放在同个目录下,方便查找。
如果有多个不同的文件夹需要设置,只需要继续添加配置即可,最终~/.gitconfig
中的配置会如下:
[user]
name = youName
email = [email protected]
## 私人项目
[includeIf "gitdir:path/to/you/dir/"]
path = ~/.gitconfig_self
## 工作项目
[includeIf "gitdir:path/to/work/dir/"]
path = ~/.gitconfig_work
以上三种配置的优先级为:项目配置 > 文件夹配置 > 全局配置