我已成功设置git并将我的项目推送到远程存储库。
我已经通过执行以下操作设置了我的全局user.name
和user.email
:
git config --global user.name 'user1'
git config --global user.email 'user1@example.com'
现在我有另一个我需要不同用户的存储库,所以我通过执行以下内容创建了另一个user
特定于repo
的存储:
git config user.name 'user2'
git config user.email 'user2@example.com'
当它尝试执行git push
时,它不会让我推送我的代码并说
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
让我用全球用户推动我的变化,现在有什么不同?我是git的新手,我很难相处。
修改:我的ssh keys
和我的github account
分别为bitbucket account
。也就是说,我希望ssh
使用全局设置github
repo
,使用bit bucket
特定设置repo
repo
。
答案 0 :(得分:1)
假设您已为这两个帐户分别设置了ssh密钥并链接到各自的帐户,以下解决了我的问题:
Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/personalid Host bitbucket.org HostName bitbucket.org PreferredAuthentications publickey IdentityFile ~/.ssh/personalid
加载ssh密钥
如果尚未按
运行,请运行ssh-agent
eval ssh-agent $ SHELL
$ SHELL是登录shell的环境变量。
ssh-add -l
ssh-add /path/to/yourKey
完成!
来源:Here
答案 1 :(得分:0)
更改git repo的用户名和用户电子邮件与ssh密钥无关,该密钥将用于推送到上游存储库。
默认情况下,该ssh密钥为~/.ssh/id_rsa.pub
该公钥(published on the BitBucket ssh user account page)是确定用户推送到BitBucket时的用户。
user.name
/ user.email
配置仅用于显示推送到BitBucket存储库的提交的正确标识。它不必反映所述BitBucket仓库的实际所有者(由ssh公钥确定,或者由BitBucket用户名/密码用户帐户确定为https协议)。
如果你想使用不同的ssh公钥(注册到不同的BitBucket uset),那么,正如我在" How to change git ssh user for a remote push temporarily?"中提到的那样,你需要一个{{1}文件
~/.ssh/config
git remote set-url origin anotheruser:reponame
作为anotheruser
文件中的条目,引用其他用户私有ssh密钥:
~/.ssh/config
请注意,您始终使用' Host anotheruser
HostName bitbucket.org
User git
IdentityFile ~/.ssh/anotheruser
'作为用于推送到BitBucket的ssh会话的用户
但是,由于您引用了正确的私有(和公共)ssh密钥,BitBucket将知道您是谁,更重要的是,如果您有权推送该回购。