.gitconfig通常存储在用户中。主目录。

我使用不同的身份为a公司工作,为B公司工作(主要是名称/电子邮件)。如何使用两种不同的Git配置,使我的签入与名称/电子邮件不一致?


当前回答

我在我的电子邮件中这样做的方式如下:

git config --global alias.hobbyprofile 'config user.email "me@example.com"'

然后当我克隆一个新的工作项目时,我只需要运行git hobbyprofile,它将被配置为使用该电子邮件。

其他回答

从git 2.13版本开始,git支持条件配置包含。在这个例子中,我们克隆了A公司在~/company_a目录下的回购,以及B公司在~/company_b目录下的回购。

在.gitconfig文件的末尾,你可以这样写:

[includeIf "gitdir:~/company_a/"]
  path = .gitconfig-company_a
[includeIf "gitdir:~/company_b/"]
  path = .gitconfig-company_b

.gitconfig-company_a的示例内容(如果可以使用全局ssh密钥,可以省略[core]部分):

[user]
name = John Smith
email = john.smith@companya.net

[core]
sshCommand = ssh -i ~/.ssh/id_rsa_companya

.gitconfig-company_b的示例内容:

[user]
name = John Smith
email = js@companyb.com

[core]
sshCommand = ssh -i ~/.ssh/id_rsa_companyb

git配置有3个级别;项目、全局、系统。

项目:项目配置仅对当前项目可用,并存储在项目目录下的.git/config中。 global:全局配置可用于当前用户的所有项目,并存储在~/.gitconfig中。 system:所有用户/项目的系统配置都可用,存储在/etc/gitconfig中。

创建一个项目特定的配置,你必须在项目的目录下执行:

$ git config user.name "John Doe" 

创建全局配置:

$ git config --global user.name "John Doe"

创建一个系统配置:

$ git config --system user.name "John Doe" 

正如你可能猜到的,项目覆盖全局和全局覆盖系统。

注意:项目配置是本地的,只针对这个特定的repo的一个特定副本/克隆,如果从远程重新克隆了这个repo,则需要重新应用。它修改没有通过提交/推送发送到远程的本地文件。

为了显式,你也可以使用——local来使用当前存储库配置文件:

git config --local user.name "John Doe" 

或者像@SherylHohman提到的那样,使用以下方法在编辑器中打开本地文件:

git config --local --edit

我也有同感。我写了一个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

你也可以将环境变量GIT_CONFIG指向一个git配置应该使用的文件。与GIT_CONFIG = ~ /。git配置-指定文件的git配置键值。