如何在一台计算机上拥有2个git用户?
我想练习使用GitHub执行pull请求,并学习如何查看不同用户之间的git差异。如何在macOS中的终端上设置另一个用户帐户来执行此操作?如何在用户之间切换?您可能使用以下命令设置现有用户如何在一台计算机上拥有2个git用户?,git,github,Git,Github,我想练习使用GitHub执行pull请求,并学习如何查看不同用户之间的git差异。如何在macOS中的终端上设置另一个用户帐户来执行此操作?如何在用户之间切换?您可能使用以下命令设置现有用户 git config--global user.name 及 git config--global user.email 您可以制作一个单独的克隆,以便从不同的文件夹进行推拉。要使提交显示在不同的用户名下(取决于文件夹),请使用 git config--local user.name 及 git confi
git config--global user.name
及
git config--global user.email
您可以制作一个单独的克隆,以便从不同的文件夹进行推拉。要使提交显示在不同的用户名下(取决于文件夹),请使用
git config--local user.name
及
git config--local user.email
从第二个克隆中
--local
选项确保这只影响第二个副本。作为第二个用户有三个方面
1.GitHub帐户
要将GitHub web界面作为另一个用户使用(例如,转移存储库、提交请求、发布评论),您需要登录到另一个帐户*
提示:在帐户之间切换是一件痛苦的事情,因为每次都要注销和登录。您可以使用专用浏览窗口、其他浏览器或其他浏览器配置文件同时登录到两个帐户
2.SSH身份验证
GitHub存储库可以通过HTTPS或SSH进行访问。两者都需要身份验证,GitHub使用身份验证来实现。我将描述如何使用配置为作为第二个用户进行身份验证的SSH克隆存储库
使用ssh keygen-f KEYFILE
,其中KEYFILE是新密钥的路径(例如~/.ssh/bob_rsa)
到第二个用户的GitHub帐户
SSH需要配置为使用~/.SSH/bob_rsa,但仅当您尝试将存储库克隆为第二个用户时。这样,您仍然可以使用添加到正常GitHub帐户的SSH密钥将存储库克隆为普通用户。可以根据主机名指定不同的配置,但对于GitHub存储库,主机名始终为GitHub.com。要仅为某些克隆存储库指定配置,请通过将以下内容附加到~/.ssh/config(),添加主机别名:
我使用了主机名bob.github.com,但它可以是任何字符串
现在,您可以使用主机名bob.GitHub.com(或您在SSH配置中使用的任何主机名)将GitHub存储库克隆为第二个用户:
如果您以这种方式克隆了第一个用户拥有的存储库,则在完成之前,您应该无法将提交推送到该存储库
测试SSH配置
如果遇到问题,请通过运行
ssh git@bob.github.com
(将bob.github.com替换为host XXX
行中的主机名)
第一次通过SSH连接到GitHub时,应该会收到如下消息
The authenticity of host 'github.com (192.30.253.113)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
键入yes
,然后按ENTER键。(对于安全意识,首先检查指纹是否列在上)
如果您的配置正确,并且通过在“SSH和GPG密钥”页面中粘贴~/.SSH/bob_rsa.pub的内容,将SSH密钥添加到第二个GitHub帐户,您应该看到
PTY allocation request failed on channel 0
Hi USER! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
USER应该是第二个帐户的名称
如果您还为您的普通帐户设置了SSH访问,那么您应该能够运行
ssh git@github.com
并获得相同的消息,但其中USER是您正常帐户的名称
3.Git作者元数据
Git在每次提交时存储作者的姓名和电子邮件地址。GitHub使用此信息显示提交历史记录中的用户化身。欺骗此信息(,)是微不足道的
作者的姓名和电子邮件地址通常存储在全局配置文件(~/.gitconfig)中。通过在存储库的目录中运行以下命令,可以在每个存储库的基础上覆盖它们:
git config --local user.name "NAME"
git config --local user.email "EMAIL"
将姓名和电子邮件替换为第二个用户的全名和电子邮件地址。--local
标志修改每个存储库的配置文件(.git/config位于存储库的根目录中),而不是修改~/.gitconfig的--global
标志。默认值是--local
,因此实际上可以省略它
现在您有了一个克隆,实际上您是第二个用户。使用另一个(正常)克隆作为第一个用户工作
*细节:GitHub只允许每人拥有一个免费帐户。我对GitHub提出的解决方案做了一点改进
() 要允许多个用户使用相同的git工作区,请执行以下操作:
~/.ssh/config
文件中为每个用户创建一个条目来为每个用户创建主机名别名:~/.ssh/config
文件中的ssh主机名中使用通配符作为默认git用户标识,
由于gitHub显示其带有MD5指纹的密钥,因此我使用FingerprintHash MD5
eval“$(ssh代理-s)”
ssh-add~/.ssh/alice\u-rsa代码>,,
用ssh add-E md5-l验证它代码>,,
然后,为了测试它,我使用ssh的-T标志:
ssh-v-T alice.github.com
(注意,您必须将公钥加载到github端:,并且每个密钥只能使用“一次”(即仅用于一个gitaccount),因此,如果您已经拥有对其他git帐户的ssh访问权限,则需要剪切一个新密钥)
我为每个主机名创建存储库别名:
为此,我编辑my.git/config w/以下内容以更改源站的url:
注意:如果您不想编辑.git/config
文件,您可以使用命令实现同样的操作(确保替换正确的存储库名称):
git远程删除源
git远程添加源git@default.github.com:47/bin.git
git远程添加bobgit@bob.github.com:47/bin.git
git远程添加alicegit@alice.github.com:47/bin.git
总而言之,它允许
ssh git@github.com
git config --local user.name "NAME"
git config --local user.email "EMAIL"
# aliases for github.com with different SSH private keys (identities)
Host *.github.com
HostName github.com
FingerprintHash md5
User: git
IdentityFile ~/.ssh/id_rsa # (default git ssh-key)
Host alice.github.com
IdentityFile ~/.ssh/alice_rsa
Host bob.github.com
IdentityFile ~/.ssh/bob_rsa
[remote "origin"]
# url = git@{{sshkeyowner}}.github.com:{{gitaccountname}}/{{gitreponame}}.git
url = git@default.github.com:michel47/bin.git
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "alice"]
url = git@alice.github.com:michel47/bin.git
fetch = +refs/heads/*:refs/remotes/alice/*
[remote "bob"]
url = git@bob.github.com:michel47/bin.git
fetch = +refs/heads/*:refs/remotes/bob/*