我在本地机器上有一个存储库。这个仓库有2个git remote。遥控器A和B。
user.name
user.email
这可以在git中实现吗?如果是,如何进行?
hiz5n14c1#
在Git 2.13中,您现在有conditional include for git config,但它仅基于存储库的文件系统路径。所以你仍然需要同一个repo的两个不同的副本。您可以实现with git worktree(一个克隆,多个工作树)然后,您可以修改您的 global 配置规范,根据您当前的文件夹,包含一组特定的www.example.com的本地配置user.name/user.email。参见pltvs(Alex Pliutau)中的“Using different Git emails”
git config
git worktree
pltvs
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>
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 homegit remote rename work employer你应该注意定期合并家庭到工作和工作到家庭,以调和任何差异,因为你不应该从家庭机器访问工作专用网络。
git remote rename origin home
git remote rename work employer
wnavrhmk3#
我认为你可以通过使用--局部的而不是--全局的来做这样的事情来实现
Agit config user.email Ygit config user.name "X"Bgit config user.email Wgit config user.name "Z"
git config user.email Y
git config user.name "X"
git config user.email W
git config user.name "Z"
存储在.git/config中的特定存储库的值,而不是全局配置文件。
mefy6pfw4#
假设您在gitlab中有一个帐户,用户名为usergitlab,电子邮件为email@1,email@2,...而且你也有一个帐户在github与用户名usergithub与电子邮件email@2,email@3,...如果你的repo有两个不同的url,一个是github:org/repo,另一个是gitlab:org/repo,你的本地git邮箱是email@2,那么提交的作者的名字取决于gitlab和github中的用户名,也就是说,分别是usergitlab和usergithub。
gitlab
usergitlab
email@1
email@2
github
usergithub
email@3
github:org/repo
gitlab:org/repo
4条答案
按热度按时间hiz5n14c1#
在Git 2.13中,您现在有conditional include for
git config
,但它仅基于存储库的文件系统路径。所以你仍然需要同一个repo的两个不同的副本。您可以实现with
git worktree
(一个克隆,多个工作树)然后,您可以修改您的 global 配置规范,根据您当前的文件夹,包含一组特定的www.example.com的本地配置user.name/user.email。
参见
pltvs
(Alex Pliutau)中的“Using different Git emails”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>
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
你应该注意定期合并家庭到工作和工作到家庭,以调和任何差异,因为你不应该从家庭机器访问工作专用网络。
wnavrhmk3#
我认为你可以通过使用--局部的而不是--全局的来做这样的事情来实现
A
git config user.email Y
git config user.name "X"
B
git config user.email W
git config user.name "Z"
存储在.git/config中的特定存储库的值,而不是全局配置文件。
mefy6pfw4#
假设您在
gitlab
中有一个帐户,用户名为usergitlab
,电子邮件为email@1
,email@2
,...而且你也有一个帐户在github
与用户名usergithub
与电子邮件email@2
,email@3
,...如果你的repo有两个不同的url,一个是
github:org/repo
,另一个是gitlab:org/repo
,你的本地git邮箱是email@2
,那么提交的作者的名字取决于gitlab
和github
中的用户名,也就是说,分别是usergitlab
和usergithub
。