pri*_*iya 252 git git-config
.gitconfig通常存储在user.home目录中.
我使用不同的身份来处理CompanyA的项目以及CompanyB的其他内容(主要是名称/电子邮件).我如何才能拥有2种不同的git配置,以便我的签到不会使用名称/电子邮件?
sar*_*lin 244
git配置有3个级别; 项目,全球和系统.
创建项目特定的配置,您必须在项目的目录下执行:
$ git config user.name "John Doe"
Run Code Online (Sandbox Code Playgroud)
创建全局配置:
$ git config --global user.name "John Doe"
Run Code Online (Sandbox Code Playgroud)
创建系统配置:
$ git config --system user.name "John Doe"
Run Code Online (Sandbox Code Playgroud)
正如您可能猜到的,项目会覆盖全局和全局覆盖系统.
Amb*_*ber 222
.git/config存储库的特定克隆中的文件是该克隆的本地文件.放置在那里的任何设置只会影响该特定项目的操作.
(默认情况下,git config修改.git/config,而不是~/.gitconfig- 仅--global修改后者.)
cre*_*ea1 173
从git版本2.13开始,git支持条件配置包括.在这个例子中,我们在~/company_a目录中克隆了公司A的回购,而在公司B的回购中~/company_b.
在你的.gitconfig你可以把这样的东西.
[includeIf "gitdir:~/company_a/"]
path = .gitconfig-company_a
[includeIf "gitdir:~/company_b/"]
path = .gitconfig-company_b
Run Code Online (Sandbox Code Playgroud)
.gitconfig-company_a的示例内容
[user]
name = John Smith
email = john.smith@companya.net
Run Code Online (Sandbox Code Playgroud)
.gitconfig-company_b的示例内容
[user]
name = John Smith
email = js@companyb.com
Run Code Online (Sandbox Code Playgroud)
iva*_*d58 13
我通过以下方式为我的电子邮件执行此操作:
git config --global alias.hobbyprofile 'config user.email "me@example.com"'
Run Code Online (Sandbox Code Playgroud)
然后,当我克隆一个新的工作项目时,我只需要运行git hobbyprofile它,它将被配置为使用该电子邮件.
Ste*_*äwe 11
您还可以将环境变量GIT_CONFIG指向git config应该使用的文件.随着GIT_CONFIG=~/.gitconfig-A git config key value指定的文件被操纵.
Ger*_*ich 10
另一种方法是使用direnv并将每个目录的配置文件分开。例如:
.
??? companyA
? ??? .envrc
? ??? .gitconfig
??? companyB
? ??? .envrc
? ??? .gitconfig
??? personal
??? .envrc
??? .gitconfig
Run Code Online (Sandbox Code Playgroud)
每个都.envrc应该包含如下内容:
export GIT_CONFIG_GLOBAL=$(pwd)/.gitconfig
Run Code Online (Sandbox Code Playgroud)
并且.gitconfig通常是具有所需值的 gitconfig。
这是我在自定义.gitconfig文件中实际拥有的内容:
[user]
email = my.name@company.com
[include]
path = ~/.gitconfig
Run Code Online (Sandbox Code Playgroud)
这里只user.email覆盖,其余配置取自默认~/.gitconfig.
明确地说,您还--local可以使用当前存储库配置文件:
git config --local user.name "John Doe"
Run Code Online (Sandbox Code Playgroud)
谢谢@ crea1
一个小的变体:
由于它写在https://git-scm.com/docs/git-config#_includes上:
如果花样以结尾
/,**将自动添加。例如,模式foo/变为foo/**。换句话说,它与foo所有内容都递归匹配。
所以我用我的情况:
[user] # as default, personal needs
email = myalias@personal-domain.fr
name = bcag2
[includeIf "gitdir:~/workspace/"] # job needs, like workspace/* so all included projects
path = .gitconfig-job
Run Code Online (Sandbox Code Playgroud)
因此,如果项目目录位于my中~/wokspace/,则默认用户设置将替换为:
[user]
name = John Smith
email = js@company.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93316 次 |
| 最近记录: |