- 远程仓库A需要使用
user.name
X和user.email
Y。 - 远程仓库B需要使用
user.name
Z和user.email
W。
user.name
X和user.email
Y。user.name
Z和user.email
W。git config
,但它仅基于存储库的文件系统路径。git worktree
(一个克隆,多个工作树)来实现这一点。pltvs
(Alex Pliutau)的 "使用不同的Git电子邮件"让我向大家介绍一个典型的场景:
Bob 是一名开发者,拥有一个与个人电子邮件地址相关联的个人 github 用户。Bob 在 github.com 上托管了一个私有的 dotfiles 代码库。Bob 获得 Acme 公司的工作机会,并希望与同事分享他的 dotfiles。Bob 使用雇主提供的用户名和电子邮件创建了一个公共的 dotfiles 仓库,在仅限于 Acme Corp 的企业 GitLab 服务器上托管,只能从公司网络中访问。
在这种情况下,与这些代码库交互的正确方法是在您的工作计算机上配置全局 git 配置,以使用您的工作 user.name 和 user.email:
git config --global user.name <工作用户名>
git config --global user.email <工作邮箱>
ssh-keygen -t ed25519 -C "your-github-username:GITHUB" -f ~/.ssh/your-github-username
*~/.ssh/your-github-username.pub
)git clone git@github.com:your-github-username/private-repo.git
git remote add work git@domain.tld:work-username/repo.git
git push -u work
将其推送到您的工作存储库现在您可以从工作仓库和个人仓库进行推送/拉取操作。不用担心提交时的用户名/电子邮件不匹配 - 实际上这并不重要。
您可以像这样重命名远程:
git remote rename origin home
git remote rename work employer
您应该定期将home合并到work,将work合并到home以协调任何差异,因为您不应该从家庭机器访问工作私有网络。
*这会向密钥添加注释,以便您记住它的用途,并允许您设置易于记忆的名称,例如您的GitHub用户名。
我认为你可以通过使用--local而不是--global来实现这样的操作
A
git config user.email Y
git config user.name "X"
B
git config user.email W
git config user.name "Z"
存储在.git/config中的值是特定仓库的配置文件,而不是全局配置文件。
git config
,然后在推送到远程仓库 B 之前再执行另一个 git config
? - Abel Callejo假设您在gitlab
中有一个帐户,用户名为usergitlab
,电子邮件为email@1
,email@2
等。同时,在github
中也有一个帐户,用户名为usergithub
,电子邮件为email@2
,email@3
等。
如果您的存储库具有两个不同的URL的远程,一个用于github:org/repo
,另一个用于gitlab:org/repo
,并且您的本地git电子邮件是email@2
,那么提交作者的名称取决于gitlab
和github
中用户的名称,即分别为usergitlab
和usergithub
。
git config --local
配置user.name
和user.email
。user.name
和user.email
与远程无关。 - ElpieKayuser.name
和user.email
与远程无关,它们仅用于将提交者的姓名/电子邮件放入提交中。如果您想为不同的远程主机设置不同的授权,可以创建不同的SSH密钥,并配置SSH使用每个密钥连接到不同的远程主机。 - phd