.gitconfig通常存储在用户中。主目录。
我使用不同的身份为a公司工作,为B公司工作(主要是名称/电子邮件)。如何使用两种不同的Git配置,使我的签入与名称/电子邮件不一致?
.gitconfig通常存储在用户中。主目录。
我使用不同的身份为a公司工作,为B公司工作(主要是名称/电子邮件)。如何使用两种不同的Git配置,使我的签入与名称/电子邮件不一致?
当前回答
使用Github配置添加多个SSH密钥
2021年8月13日之后,git不支持HTTPs认证方法,所以我认为这个答案需要更新。
遵循以下步骤:
删除保存在~/. SSH /目录下的所有SSH密钥(公共和私有)。 创建新的SSH密钥:
ssh-keygen -t rsa -b 4096 -C "account1@gmail.com"
ssh-keygen -t rsa -b 4096 -C "account2@gmail.com"
当询问文件名时,给出默认的~/。为account1和~/配置Ssh /id_rsa。Ssh /id_rsa_acc2对应account2。
启动ssh-agent,为account1和account2添加私钥:
eval `ssh-agent`
ssh-add -k ~/.ssh/id_rsa
ssh-add -k ~/.ssh/id_rsa_acc2
使用ssh-add -l命令确认添加密钥
复制account1和account2的公钥,并将其添加到您的github帐户。命令:cat ~/.ssh/id_rsa。Pub | pbcopy(检查是否复制:pbpaste 将account1的用户名和用户邮箱设置为GitHub全局配置:
git config --global user.name "acc1_username"
git config --global user.email "account1@gmail.com"
创建~ /。Ssh /config文件,配置如下:
# account1 github
Host github.com
HostName github.com
User git
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
# account2 github
Host github.com-acc2
HostName github.com
User git
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa_acc2
要为一个项目设置GitHub account2,在项目根目录中设置项目级别的用户名和电子邮件:
git config user.name "acc2_username"
git config user.email "account2@gmail.com"
现在通过使用GitHub repo的SSH链接克隆或添加起源:
# for account1 repo
git remote set-url origin git@github.com:acc1_username/reponame.git
# for account2 repo
git clone git@github.com-acc2:acc2_username/reponame.git
如果有任何疑问,请随意添加评论。
其他回答
从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
为了显式,你也可以使用——local来使用当前存储库配置文件:
git config --local user.name "John Doe"
或者像@SherylHohman提到的那样,使用以下方法在编辑器中打开本地文件:
git config --local --edit
使用Github配置添加多个SSH密钥
2021年8月13日之后,git不支持HTTPs认证方法,所以我认为这个答案需要更新。
遵循以下步骤:
删除保存在~/. SSH /目录下的所有SSH密钥(公共和私有)。 创建新的SSH密钥:
ssh-keygen -t rsa -b 4096 -C "account1@gmail.com"
ssh-keygen -t rsa -b 4096 -C "account2@gmail.com"
当询问文件名时,给出默认的~/。为account1和~/配置Ssh /id_rsa。Ssh /id_rsa_acc2对应account2。
启动ssh-agent,为account1和account2添加私钥:
eval `ssh-agent`
ssh-add -k ~/.ssh/id_rsa
ssh-add -k ~/.ssh/id_rsa_acc2
使用ssh-add -l命令确认添加密钥
复制account1和account2的公钥,并将其添加到您的github帐户。命令:cat ~/.ssh/id_rsa。Pub | pbcopy(检查是否复制:pbpaste 将account1的用户名和用户邮箱设置为GitHub全局配置:
git config --global user.name "acc1_username"
git config --global user.email "account1@gmail.com"
创建~ /。Ssh /config文件,配置如下:
# account1 github
Host github.com
HostName github.com
User git
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
# account2 github
Host github.com-acc2
HostName github.com
User git
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa_acc2
要为一个项目设置GitHub account2,在项目根目录中设置项目级别的用户名和电子邮件:
git config user.name "acc2_username"
git config user.email "account2@gmail.com"
现在通过使用GitHub repo的SSH链接克隆或添加起源:
# for account1 repo
git remote set-url origin git@github.com:acc1_username/reponame.git
# for account2 repo
git clone git@github.com-acc2:acc2_username/reponame.git
如果有任何疑问,请随意添加评论。
找到了一个非常有用的shell脚本,覆盖了ssh密钥生成的所有过程,并一次又一次地输入长命令
注意:这仅适用于ZSh用户
https://github.com/tw-yshuang/Git_SSH-Account_Switch
我有一个错误时,试图得到藏匿我的本地更改。来自git的错误说“请告诉我你是谁”,然后告诉我“运行git配置—全局用户”。email“you@example.com和git config——global user.name“你的名字”来设置你帐户的默认身份。”但是,必须使用省略——global来仅在当前存储库中设置标识。