使用Git进行版本控制,不同的项目怎么设置不同的提交用户名和邮箱呢?
1.全局设置用户名和邮箱
因为平时除了开发公司项目还会写自己的项目或者去维护开源项目,一般情况下,公司会要求提交代码时使用自己的真名或者拼音和公司邮箱,以前就只会设置全局用户名或邮箱如下
git config --global user.name "username"
git config --global user.email "username@email.com"
但是在维护非公司的项目时,肯定不能暴露自己的姓名和邮箱啊?所以我们面临这个问题:不同的项目怎么设置不同的提交用户名和邮箱呢?
2.配置单个项目提交用户名和邮箱
其实就是不直接使用全局配置的用户名和邮箱,而是对某个项目单独配置用户名和邮箱。在当前项目下打开Git命令行,配置如下
git config user.name "username"
git config user.email "username@email.com"
之后可以打开 .git/config 文件看配置生效如下
[user]
name = username
email = username@email.com
3.批量配置项目的提交用户名和邮箱
当有多个项目需要配置Git提交信息时,一个一个配置麻烦而且容易疏漏,那就可以使用git的includeIf配置一次性给多个项目配置提交用户名和邮箱,来实现在某文件夹下的所有git项目统一使用同一个git配置文件。
- 首先将个人维护的项目,统一放到同一个路径下。比如:D:projects
- 创建一个.gitconfig文件,配置信息:
[user]
name = username
email = username@xxx.com
- 修改Git的用户配置文件 .gitconfig,这个配置文件路径一般都是 C:Users用户名.gitconfig 。添加配置信息如下
# 配置demo项目
[includeIf "gitdir/i:~/projects/"]
path = ~/.gitconfig
配置后所有在 projects 这个路径下的项目的配置信息就直接使用 projects/.gitconfig 中的配置了。
注:配置文件优先级及路径基本语法
- Git支持多级配置,分别是system(系统级)、global(用户级)、local(项目级)和worktree(工作区级)
- 配置优先级: worktree > local > global > system
system系统级(安装路径/etc/gitconfig): 系统级配置文件,对系统中所有用户都普遍适用的配置。使用 git config --system读写的就是这个文件。
global用户级(C:/Users/用户名/.gitconfig): 用户级配置文件,用户目录下的配置文件只适用于该用户。使用 git config --global读写的就是这个文件。
local项目级(某仓库的本地路径/.git/config): 项目级配置文件,当前项目的 git仓库目录中的配置文件(也就是工作目录中的 .git/config 文件),这里的配置仅仅针对当前项目有效。使用 git config --local或 省略 local参数,读写的就是这个文件。
worktree工作区级: 工作区级配置,此配置仅仅针对当前工作区有效。使用 git config --worktree进行配置。
每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
- 基本语法
在2017年,git新发布的版本2.13.0包含了一个新的功能includeIf配置,可以把匹配的路径使用对应的配置用户名和邮箱;
"条件类型:匹配模式" 是 includeIf 的条件;只有当条件成立时,才会包含 path 选项指定的配置文件;
条件类型 和 匹配模式 用 : 分隔;
条件类型 共有以下几种 gitdir、gitdir/i、onbranch;
gitdir、gitdir/i: 路径匹配模式,表示 如果 当前 git仓库的 .git 目录的位置 符合 路径匹配模式, 就加载对应的配置文件;(gitdir/i表示 匹配模式忽略大小写)
.git 目录的位置可能是 git 自动找到的 或是 $GIT_DIR 环境变量的值;
onbranch: 分支匹配模式, 表示 如果我们位于当前检出的分支名称 与 分支匹配模式 匹配的工作树中,就加载对应的配置文件;
匹配模式 采用标准的 glob 通配符 再加上 表示任务路径的通配符 **;
path 用于指定配置文件的路径;
可以通过写多个 path 来表示包含多个配置文件。
如有错漏之处,敬请指正。