项目隔离,不同的项目使用不同的 Git 配置
大约 2 分钟
适应场景
- 情况 1:你可能有多个邮箱,你希望项目 A 用邮箱 A,项目 B 用邮箱 B。很直观的做法就是在每个不同的项目中设置不同的邮箱。每次
git clone xxx
项目之后,git config user.name xxx
和git config user.email xxx
,但是每个项目都要自己设置就非常的麻烦。 - 情况 2:你同时有公司的项目和自己的项目,希望公司的项目用公司邮箱,自己的项目用自己的邮箱,那么这种情况下一般会先设置
global
的name
和email
为公司邮箱,固定某个文件夹(personal_projects)设置为自己的邮箱。这种方法的优点是不需要在每个仓库中单独设置 Git 配置,而且可以轻松地管理多个项目或文件夹的不同 Git 身份。
配置步骤
我们可以使用 Git 的条件包含(conditional includes)功能来为特定文件夹设置不同的 user.name
和 user.email
。
- 首先,全局 Git 配置中设置默认的
user.name
和user.email
(如果还没有设置的话):
git config --global user.name "bbruceyuan_glocal"
git config --global user.email "bbruceyuan_glocal.email@example.com"
- 在
personal_projects
文件夹中创建一个.gitconfig
文件:
cd path/to/personal_projects
touch .gitconfig
- 编辑
personal_projects/.gitconfig
文件,添加以下内容:
[user]
name = bbruceyuan
email = bruceyuan@mail.com
- 在全局
.gitconfig
文件中(通常位于~/.gitconfig
)添加条件包含配置:
[includeIf "gitdir:/path/to/personal_projects/"]
path = /path/to/personal_projects/.gitconfig
注意:
- 路径必须以斜杠
/
结尾。 - 路径可以是绝对路径
/path/to/personal_projects/
- 路径可以是相对路径,例如
~/personal_projects/person/
。
这样设置后,Git
将在 personal_projects
文件夹及其子文件夹中使用特定的 user.name (bbruceyuan)
和 user.email (bruceyuan@mail.com)
,而在其他地方使用全局设置。