Answers:
git config分为3个级别;项目,全局和系统。
创建项目特定的配置,您必须在项目目录下执行此配置:
$ git config user.name "John Doe"
创建一个全局配置:
$ git config --global user.name "John Doe"
创建系统配置:
$ git config --system user.name "John Doe"
您可能会猜到,项目会覆盖全局和全局覆盖系统。
git config user.name
或git config user.email
将为您显示Git用于当前存储库的名称或电子邮件。
从git版本2.13开始,git支持条件配置include。在此示例中,我们在~/company_a
目录中克隆了公司A的存储库,并在中克隆了公司B的存储库~/company_b
。
在你的.gitconfig
,你可以把这样的事情。
[includeIf "gitdir:~/company_a/"]
path = .gitconfig-company_a
[includeIf "gitdir:~/company_b/"]
path = .gitconfig-company_b
.gitconfig-company_a的示例内容
[user]
name = John Smith
email = john.smith@companya.net
.gitconfig-company_b的示例内容
[user]
name = John Smith
email = js@companyb.com
谢谢@ crea1
一个小的变体:
正如它写在https://git-scm.com/docs/git-config#_includes上一样:
如果花样以结尾
/
,**
将自动添加。例如,模式foo/
变为foo/**
。换句话说,它与foo
所有内容都递归匹配。
所以我用
〜/ .gitconfig:
[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
# all others section: core, alias, log…
因此,如果项目目录位于my中~/wokspace/
,则默认用户设置将替换为
〜/ .gitconfig-w:
[user]
name = John Smith
email = js@company.com
git config user.name
返回正确的,应该没问题。您是在GNU / Linux还是其他操作系统下?
您也可以将环境变量GIT_CONFIG
指向git config
应使用的文件。使用GIT_CONFIG=~/.gitconfig-A git config key value
指定的文件进行操作。
您可以通过更改存储库特定的配置文件(即/path/to/repo/.git/config
)来自定义项目的Git配置。顺便说一句,git config
默认情况下写入此文件:
cd /path/to/repo
git config user.name 'John Doe' # sets user.name locally for the repo
我更喜欢为不同的项目创建单独的配置文件(例如在中~/.gitconfig.d/
),然后将其包含在存储库的配置文件中:
cd /path/to/repo
git config include.path '~/.gitconfig.d/myproject.conf'
如果您需要在属于单个项目的多个存储库中使用相同的选项集,则此方法效果很好。您还可以设置外壳别名或自定义的Git命令来操作配置文件。
我在同一条船上。我写了一些bash脚本来管理它们。 https://github.com/thejeffreystone/setgit
#!/bin/bash
# setgit
#
# Script to manage multiple global gitconfigs
#
# To save your current .gitconfig to .gitconfig-this just run:
# setgit -s this
#
# To load .gitconfig-this to .gitconfig it run:
# setgit -f this
#
#
#
# Author: Jeffrey Stone <thejeffreystone@gmail.com>
usage(){
echo "$(basename $0) [-h] [-f name]"
echo ""
echo "where:"
echo " -h Show Help Text"
echo " -f Load the .gitconfig file based on option passed"
echo ""
exit 1
}
if [ $# -lt 1 ]
then
usage
exit
fi
while getopts ':hf:' option; do
case "$option" in
h) usage
exit
;;
f) echo "Loading .gitconfig from .gitconfig-$OPTARG"
cat ~/.gitconfig-$OPTARG > ~/.gitconfig
;;
*) printf "illegal option: '%s'\n" "$OPTARG" >&2
echo "$usage" >&2
exit 1
;;
esac
done
-s
不会在您的Bash脚本中处理。
尝试进行git stash
本地更改时出现错误。来自git的错误显示“请告诉我您是谁”,然后告诉我“运行git config --global user.email "you@example.com
并git config --global user.name "Your name"
设置您帐户的默认身份”。但是,您必须省略--global才能仅在当前存储库中设置身份。
[user] email = ...
块),将覆盖全局文件~/.gitconfig
-这仅适用于您的用户?