在一台计算机上的一个Git中切换用户身份

时间:2012-02-19 07:18:08

标签: git github

我在 GitHub 上有 ONE 存储库,我们称之为Repo-1

我想首先以默认Git用户访问该存储库。

我们称该用户为User-1

我创建了 SSH密钥对,一切正常,效果很好


我在 GitHub 上创建了另一个存储库,我们称之为Repo-2

在我的笔记本电脑上没有对本地Git进行任何更改。没有配置更改,没有。

现在 - 我希望Repo-1中的{strong>克隆作为User-2(但来自同一台笔记本电脑)。

首先:这有可能吗?

单个笔记本电脑上的本地Git可以在“用户帐户”之间切换并显示为User-2吗?然后,根据这个身份,从Repo-1克隆,进行一些更改,然后推送到Repo-1

如果可能,我该怎么做?

2 个答案:

答案 0 :(得分:72)

您已经在全局.gitconfig中配置了SSH密钥/用户信息。全局.gitconfig被本地gitconfig覆盖 - 文件" config"在.git文件夹中(如果它不存在,则可能必须创建它)。

例如,您可以将.gitconfig文件复制到.git文件夹中(并将其重命名为" config")并只更改要更改的行(可能是github.user和github.token)或者你创建一个只包含两行的新文件。

如果您更喜欢命令行" git config"你可以通过省略" - global"来避免所有文件移动的东西。选项。

答案 1 :(得分:51)

您需要确定您是否确实有两个ssh密钥对,或者只是要使用两封电子邮件。 ssh密钥对与here所述的帐户相关联。

ssh keypair(特别是私钥),基本上赋予你的git客户端连接到github的权限,从而允许推送。这与用户身份是分开的,用户身份只是提交消息中的电子邮件。

如果您有两个ssh密钥对,每个密钥对都链接到一个帐户,请按照these说明创建~/.ssh/config文件。关键部分是为每个帐户使用不同的ssh psuedo-host:

# Default GitHub user (joe)
Host github.com
  HostName github.com
  User git
  IdentityFile /Users/joe/.ssh/id_rsa

# Client user (client)
Host github-client
  HostName github.com
  User git
  IdentityFile /Users/joe/.ssh/id_rsa_client

然后使用两个相应的遥控器:

git clone git@github.com:joe/my_repo.git

git clone git@github-client:client/his_repo.git

如果您只想使用两封电子邮件,则可以使用所需的.git/config设置为每个克隆提供单独的[user]