我和一个朋友共用我的电脑。我已经在Windows 7上使用git bash shell推送到GitHub。现在我们在那台电脑上做一个不同的项目,我需要她推到她的账户上。但它一直试图使用我的用户名,并说我没有访问她的存储库:
$ git push her_github_repository our_branch
ERROR: Permission to her_username/repository.git denied to my_username.
fatal: The remote end hung up unexpectedly
重要:2021年8月13日删除了对密码验证的支持。
如果运行git push后,git要求输入用户密码,但你想以new_user的身份推送,你可能需要使用git配置remote.origin.url:
$ git push
user@my.host.com:either/branch/or/path's password:
此时使用^C退出git推送,并使用following作为new_user进行推送。
$ git config remote.origin.url
user@my.host.com:either/branch/or/path
$ git config remote.origin.url new_user@my.host.com:either/branch/or/path
$ git push
new_user@my.host.com:either/branch/or/path's password:
如果您使用不同的windows用户,您的SSH密钥和git设置将是独立的。
如果这对你来说不是一个选择,那么你的朋友应该把你的SSH密钥添加到她的Github帐户。
虽然,之前的解决方案会让你自己推动,但它会让你推动她的回购。如果你不想在同一台电脑的不同文件夹中工作,你可以通过删除config命令的-g标志,在git的本地文件夹中设置用户名和电子邮件:
git config user.name her_username
git config user.email her_email
或者,如果你推送https协议,Github每次都会提示输入用户名/密码(除非你使用密码管理器)。
您可以使用不同的帐号进行推送。
例如,如果您的帐户是存储在.gitconfig中的帐户A,您想使用帐户B,它是您想要推送的回购的所有者。
账号B: B_user_name, B_password
SSH链接示例:https://github.com/B_user_name/project.git
B账号推送为:
$ git push https://'B_user_name':'B_password'@github.com/B_user_name/project.git
查看.gitconfig中的帐户
$git配置——global——list
$git配置——global -e(也可以更改帐户)
我一直在使用一台机器,用不同的用户名将代码推送到两个不同的GitHub帐户。假设您已经设置了一个帐户,并想添加一个新帐户:
生成新的SSH密钥SSH -keygen -t rsa -C "myaddress@example.com"
保存它,但记住不要覆盖现有的id_rsa。给它一个不同的名字,例如id_rsa_another
复制密钥的内容到你的GitHub帐户:
设置-> SSH和GPG密钥-> SSH新密钥->标签粘贴
the key ->添加SSH密钥
将密钥添加到ssh代理:ssh- Add ~/.ssh/id_rsa_another
安装一个GitHub主机:用touch ~/创建一个配置文件。Ssh /config并编辑文件,为您的帐户提供配置:
#first account
Host github.com-first
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
#another account
Host github.com-another
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_another
现在您应该能够根据您添加到ssh代理的键从不同的帐户推送,即使用您的第一个帐户
ssh-add ~ / . ssh / id_rsa。
你可能还想更改你的用户邮箱:
Git配置——全局用户。电子邮件“myaddress@example.com”
或者在向其中一个帐户发送代码时,在权限错误的情况下清除SSH密钥:
ssh-add - d
如果运行git push后,git要求输入用户密码,但你想以new_user的身份推送,你可能需要使用git配置remote.origin.url:
$ git push
user@my.host.com:either/branch/or/path's password:
此时使用^C退出git推送,并使用following作为new_user进行推送。
$ git config remote.origin.url
user@my.host.com:either/branch/or/path
$ git config remote.origin.url new_user@my.host.com:either/branch/or/path
$ git push
new_user@my.host.com:either/branch/or/path's password: