最近,我被添加为Github项目的成员/贡献者。我已经在本地机器上克隆了该项目。
我已经做了一些更改并在本地提交,现在尝试将更改推送到原始仓库但是当我尝试推送时,我得到一些权限错误?
C:\Users\MM\Documents\GitHub\software-licensing-php [master]> git push
origin master
remote: Permission to EasySoftwareLicensing/software-licensing-php.git denied to
irfandayan.
fatal: unable to access 'https://github.com/EasySoftwareLicensing/software-licen
sing-php.git/': The requested URL returned error: 403
C:\Users\MM\Documents\GitHub\software-licensing-php [master]> git statu
s
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
我是否缺乏推动更改的权限,因此我可以询问项目的原始作者?
答案 0 :(得分:106)
答案 1 :(得分:43)
当我更改用户电子邮件时,我曾经遇到过相同的错误 git config --global user.email 并在此找到我的解决方案: 转到:控制面板 - >用户帐户 - >管理您的凭据 - > Windows凭据
在 通用凭据 下,有一些与Github相关的凭据, 点击它们,然后点击" 删除 "。
当你尝试推送某些东西时,你需要再次登录。 希望这对你有所帮助
答案 2 :(得分:19)
In能够通过以下网址提供用户名和密码来解决此问题。
请用您的github credentauls替换用户名和密码
git remote set-url origin https://<username>:<password>@github.com/narulasrinivas/FirstRepository.git
答案 3 :(得分:5)
出于某种原因,我的推拉原点已更改为 HTTPS-url ,而不是 SSH-url (可能是我的复制粘贴错误),但试图登录后尝试推送会给我以下错误:
Username for 'https://github.com': xxx
Password for 'https://xxx@github.com':
remote: Invalid username or password.
使用SSH URL更新远程源,解决了问题:
git remote set-url origin git@github.com:<username>/<repo>.git
希望这有帮助!
答案 4 :(得分:4)
请参阅github help on cloning URL。使用HTTPS,如果您无权推送,您基本上只能拥有只读访问权限。所以是的,你需要让作者给你许可。
如果作者未授予您许可,您可以随时分叉(克隆)其存储库并自行处理。一旦你做了一个很好的测试功能,你就可以向原作者发送一个拉取请求。
答案 5 :(得分:1)
根据原始海报到目前为止提供的信息,EasySoftwareLicensing/software-licensing-php的项目所有者可能只接受来自分叉的拉取请求,因此您可能需要分叉主回购并推送到你的前叉,然后从它发出拉请求到主回购。
有关说明,请参阅以下GitHub help articles:
答案 6 :(得分:0)
获取此错误的另一种方法是,如果您有重复或有冲突的~/.ssh/*
条目。首先检查ssh密钥链上的内容:
$ ssh-add -l
2048 SHA256:<hash1> email2@gmail.com (RSA)
2048 SHA256:<hash2> email1@gmail.com (RSA)
2048 SHA256:<hash3> email1@gmail.com (RSA)
正如您所看到的,有两封相同的电子邮件,您很容易感到困惑。然后检查您的config
文件:
$ cat ~/.ssh/config
# GitHub: email1@gmail.com
Host github_ex
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_ex
# GitHub: email2@gmail.com
Host github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
# Bitbucket: email1@gmail.com
Host bitbucket
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/bitbuc
在这里,您可以看到有两个不同的电子邮件帐户到github,但是HostName
相同。有人一定会感到困惑,包括你的混蛋。
要解决,请手动删除(复制后)(默认)文件:
cd ~/.ssh
rm id_rsa
rm id_rsa.pub
现在复制您要使用的那个,例如Host github
:
cp -a github id_rsa
cp -a github.pub id_rsa.pub
然后再试一次。
出于某种原因,删除ssh-add -d id_rsa
的密钥并没有按预期工作,因为似乎缓存了密钥链。
答案 7 :(得分:0)
我也有这个问题,但是设法解决了,错误是您的计算机已保存了git用户名和密码,因此如果您转移到另一个帐户,则会出现错误403。下面是解决方案 对于Windows,您可以在此处找到密钥:
控制面板>用户帐户>凭据管理器> Windows凭据>通用凭据
下一步,删除Github键。