如何以不同用户身份自动连接到Bitbucket,以使用不同的存储库?

问题描述

我目前正在将Bitbucket用于工作和个人项目。问题是我登录时有两个不同的Bitbucket用户,用于访问和提交用于工作的存储库以及用于个人项目的存储库。

我将一个SSH密钥对用于工作存储库,将另一个SSH密钥对用于我的个人存储库。但是,当我运行以下命令时,总是看到我以工作用户身份登录到Bitbucket:

ssh -vT [email protected]

结果,我无法从命令行从我的个人Bitbucket存储库中推入或拉出。如何设置我的存储库,以便它始终自动以我的工作Bitbucket用户身份推送和拉出工作存储库,并以我的个人Bitbucket用户身份自动存储和推送个人存储库?谢谢。

解决方法

做到这一点的方法是将给定的git repo中找到的$HOME/.ssh/config文件和reponame/.git/config文件合并在一起。

您的$HOME/.ssh/config文件如下所示。

username@hostname:~$ cat ~/.ssh/config
Host bbmine
        HostName bitbucket.org
        User git
        IdentityFile /home/username/.ssh/id_rsamine

Host bbwork
        HostName bitbucket.org
        User git
        IdentityFile /home/usermname/.ssh/id_rsawork

在git仓库中的文件reponame/.git/config中,您将放置一个如下所示的远程部分:

[remote "bbmineremote"]
        url = bbmine:bitbucketusername/reponame.git
        fetch = +refs/heads/*:refs/remotes/bitbucket/*

然后您可以像推和拉树枝一样

git push bbmineremote master

git pull bbmineremote master

您可以通过运行以下ssh命令来确认已正确设置

username@hostname:~$ ssh bbmine
PTY allocation request failed on channel 0
logged in as bitbucketusername

You can use git or hg to connect to Bitbucket. Shell access is disabled
Connection to bitbucket.org closed.

Host文件中的这些.ssh/config部分就像是使用ssh的事物(例如git)的别名。