如何user.nameuser.email为不同的git remote指定多个www.example.com和www.example.com?

14ifxucb  于 2023-05-05  发布在  Git
关注(0)|答案(4)|浏览(239)

我在本地机器上有一个存储库。这个仓库有2个git remote。遥控器A和B。

  • 远程A需要user.nameXuser.emailY
  • 远程B需要user.nameZuser.emailW

这可以在git中实现吗?如果是,如何进行?

hiz5n14c

hiz5n14c1#

在Git 2.13中,您现在有conditional include for git config,但它仅基于存储库的文件系统路径。
所以你仍然需要同一个repo的两个不同的副本。您可以实现with git worktree(一个克隆,多个工作树)
然后,您可以修改您的 global 配置规范,根据您当前的文件夹,包含一组特定的www.example.com的本地配置user.name/user.email。
参见pltvsAlex Pliutau)中的“Using different Git emails

11dmarpk

11dmarpk2#

我给大家介绍一个典型的场景:
Bob是一名开发人员,他的个人电子邮件地址附带了一个个人github用户。Bob在github.com上有一个私有的dotfiles存储库。Bob在Acme公司找到了一份工作,他想与同事分享他的dotfiles。Bob使用他的雇主提供的用户名和电子邮件在企业gitlab服务器上创建了一个公共dotfiles存储库,只能从Acme Corp的公司网络访问。
在这种情况下,与这些存储库交互的正确方法是在工作机器上配置全局git配置,以使用您的工作user.name和user.email:

  • git config --global user.name <work-username>
  • git config --global user.email <work-email>
  • 在工作机器上创建一个新的密钥,用于访问公共github:
  • ssh-keygen -t ed25519 -C "your-github-username:GITHUB" -f ~/.ssh/your-github-username *
  • 在浏览器中登录公共github帐户,并将新创建的公钥添加到您的帐户(可在~/.ssh/your-github-username.pub找到)
  • 从作业机器运行:
  • git clone git@github.com:your-github-username/private-repo.git
  • 做一个多余的测试提交,当你在浏览器中检查repo时,你会看到提交是由你的工作user.name和user.email创作的,但推送到你的仓库就好了。
  • 登录到其他/enterprise github/gitlab帐户(可能在私人服务器上,但不总是),并创建一个新的空存储库,没有自述文件。
  • 运行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
你应该注意定期合并家庭到工作和工作到家庭,以调和任何差异,因为你不应该从家庭机器访问工作专用网络。

  • 这会为密钥添加注解,以便您记住它的用途,并允许您设置一个易于记住的名称,例如您的GitHub用户名
wnavrhmk

wnavrhmk3#

我认为你可以通过使用--局部的而不是--全局的来做这样的事情来实现

Agit config user.email Ygit config user.name "X"
Bgit config user.email Wgit config user.name "Z"

存储在.git/config中的特定存储库的值,而不是全局配置文件。

mefy6pfw

mefy6pfw4#

假设您在gitlab中有一个帐户,用户名为usergitlab,电子邮件为email@1email@2,...而且你也有一个帐户在github与用户名usergithub与电子邮件email@2email@3,...
如果你的repo有两个不同的url,一个是github:org/repo,另一个是gitlab:org/repo,你的本地git邮箱是email@2,那么提交的作者的名字取决于gitlabgithub中的用户名,也就是说,分别是usergitlabusergithub

相关问题