如何以不同的用户身份自动连接到 Bitbucket 以获取不同的回购协议?

How can I automatically connect to Bitbucket as different users for different repos?

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

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

ssh -vT git@bitbucket.com

因此,我无法从命令行从我的个人 Bitbucket 存储库中推送或拉取。我如何设置我的回购协议,以便它始终自动推送和拉取工作回购协议作为我的工作 Bitbucket 用户和个人回购协议作为我的个人 Bitbucket 用户?谢谢。

执行此操作的方法是结合在给定 git 存储库中找到的 unqiue $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.

.ssh/config 文件中的这些 Host 部分有点像任何使用 ssh 的别名,例如 git.