.gitconfig
通常存储在user.home
目录中。
我使用不同的身份来处理CompanyA的项目以及CompanyB的其他内容(主要是名称/电子邮件)。我如何才能拥有2种不同的git配置,以便我的签到不会使用名称/电子邮件?
答案 0 :(得分:209)
git配置有3个级别;项目,全球和系统。
创建项目特定的配置,您必须在项目的目录下执行:
$ git config user.name "John Doe"
创建全局配置:
$ git config --global user.name "John Doe"
创建系统配置:
$ git config --system user.name "John Doe"
正如您可能猜到的,项目会覆盖全局和全局覆盖系统。
答案 1 :(得分:190)
存储库的特定克隆中的.git/config
文件是该克隆的本地文件。放置在那里的任何设置只会影响该特定项目的操作。
(默认情况下,git config
会修改.git/config
,而不是~/.gitconfig
- 只有--global
会修改后者。)
答案 2 :(得分:138)
从git版本2.13开始,git支持conditional configuration includes。在此示例中,我们在~/company_a
目录中克隆了公司A的回购,在~/company_b
中克隆了公司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
答案 3 :(得分:11)
我通过以下方式为我的电子邮件执行此操作:
data:[<mediatype>][;base64],<data>
然后,当我克隆一个新的工作项目时,我只需要运行git config --global alias.hobbyprofile 'config user.email "me@example.com"'
,它将被配置为使用该电子邮件。
答案 4 :(得分:9)
您还可以将环境变量GIT_CONFIG
指向git config
应使用的文件。使用GIT_CONFIG=~/.gitconfig-A git config key value
操作指定的文件。
答案 5 :(得分:6)
感谢@ 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
因此,如果项目目录位于我的~/wokspace/
中,则默认用户设置将替换为:
[user]
name = John Smith
email = js@company.com
答案 6 :(得分:3)
为明确起见,您还可以使用--local
使用当前存储库配置文件:
git config --local user.name "John Doe"
答案 7 :(得分:1)
我在同一条船上。我写了一个小的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
答案 8 :(得分:0)
尝试Android resource linking failed
error: attribute hasStickyHeaders not found.
error: attribute isDrawingListUnderStickyHeader not found.
error: failed linking file resources.
我的本地更改时出现错误。 git发出的错误消息是“请告诉我您是谁”,然后告诉我“运行git stash
和git config --global user.email "you@example.com
来设置您帐户的默认身份。”但是,您必须省略--global 才能仅在当前存储库中设置身份。
答案 9 :(得分:0)
另一种方法是使用direnv并在每个目录中分隔配置文件。例如:
.
├── companyA
│ ├── .envrc
│ └── .gitconfig
├── companyB
│ ├── .envrc
│ └── .gitconfig
└── personal
├── .envrc
└── .gitconfig
每个.envrc
应该包含以下内容:
export GIT_CONFIG=$(pwd)/.gitconfig
.gitconfig
通常是带有所需值的gitconfig。
答案 10 :(得分:0)
您可以通过更改存储库特定的配置文件(即/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/
中),然后在存储库的配置文件中include创建它们:
cd /path/to/repo
git config include.path '~/.gitconfig.d/myproject.conf'
如果您需要在属于单个项目的多个存储库中使用相同的选项集,则此方法效果很好。您还可以设置外壳别名或自定义的Git命令来操作配置文件。
答案 11 :(得分:0)
从系统中查找.gitconfig
Windows的文件位置:“ C:\ Users $ {USER_NAME} .gitconfig”
Linux的文件位置:“ / usr / local / git / etc / gitconfig”
打开.gitconfig文件,然后根据您的条件添加以下行
def contact(request):
if request.method == "POST":
Contact.objects.create(**request.POST)
return render(request,'contact.html')