我有一个非常奇怪的问题与git和github。当我试着推的时候,我得到:
git push -u origin master
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
我添加了遥控器:
git remote add origin git@github.com:account-name/repo-name.git
什么好主意吗?
我有一个非常奇怪的问题与git和github。当我试着推的时候,我得到:
git push -u origin master
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
我添加了遥控器:
git remote add origin git@github.com:account-name/repo-name.git
什么好主意吗?
当前回答
创建一个Fork
如果没有对该存储库的写访问权,则不需要它。按照下面的说明创建一个fork——它是你自己的存储库的克隆,你可以自由修改。
在创建fork之后,您可以将该repo复制到您的计算机。
git clone git@github.com:<your-git-handle>/<repository>.git
// It will be cloned to your machine where you run the command
// under a <repository> folder that it will create.
签出一个新的分支并进行更改。
git checkout -b my-new-feature
要将更改提交到原始存储库,您需要确保它们已被推送
/* make changes */
git commit -am "New Feature: Made a new feature!"
git push origin my-new-feature
要将这些更改放到派生出来的原始存储库中,您可以按照以下说明提交一个Pull Requests。Pull Request基本上,你请求对存储库有写访问权限的用户下拉你所做的更改。把它想象成“我请求您将我的更改拉到您的回购中。”
注意:尽管如此,您的分支不会与原始存储库中正在进行的所有更改保持最新。您必须定期删除这些更改—但这很容易。
创建分叉后,你可以链接到你已经分叉的回购,这样你就可以拉进它的变化并保持最新。
git remote add upstream git@github.com:<git-user-handle>/<repository>.git
一旦你做到了这一点,保持与原始回购上所做的更改同步是非常容易的。
git checkout master // checkout your local master
git pull upstream master // fetch changes from the master branch of the repo you forked from.. which is linked to your fork under the alias "upstream" (common naming convention)
git push origin master // push the pulled changes onto your local master
git checkout -b new-branch // create a new branch and start making changes
其他回答
如果你的repo之前工作正常,突然弹出这个错误,最有可能的原因是你的git被认证为其他用户,没有访问存储库的权限。因此,为了进行推送,您所需要做的就是在git命令中指定正确的用户名和密码。所以,一个github回购的推命令看起来像:
git push https://youruser:password@github.com/user/reponame.git
用户名和密码需要进行url转义,因此@应该被%40取代,等等。
remote:未找到存储库。可能是一个令人沮丧的误导错误消息从github试图推到HTTPS远程,你没有写权限。
检查您对存储库的写权限!
尝试SSH远程到相同的存储库显示不同的响应:
% git remote add ssh git@github.com:our-organisation/some-repository.git
% git fetch ssh
From github.com:our-organisation/some-repository
* [new branch] MO_Adding_ECS_configs -> ssh/MO_Adding_ECS_configs
* [new branch] update_gems -> ssh/update_gems
% git push ssh
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
“正确的访问权限?”
那你为什么不早说?
此时值得注意的是,虽然SSH失败模式在此场景中 稍微好一点,我使用HTTPS远程超过SSH,因为 GitHub推荐HTTPS over SSH。
我知道GitHub使用“未找到”的意思是“禁止”在一些 环境防止不经意间泄露了一个私人的存在 存储库。
需要身份验证的请求将返回404 Not Found,而不是 在某些地方是禁止的。这是为了防止意外泄漏 未授权用户的私有存储库。
——GitHub
这在网络上是一种相当普遍的做法,实际上它是这样定义的:
404(未找到)状态代码表示未找到原始服务器 目标资源的当前表示形式或不愿意 揭露它的存在。
——6.5.4。404未找到,RFC 7231 HTTP/1.1语义和内容(重点挖掘)
对我来说毫无意义的是,当我使用一个GitHub认证 凭据助手 并且我可以访问该存储库(已经成功地克隆和获取 它),GitHub会选择隐藏它的存在对我因为失踪 写权限。
通过网络查看https://github.com/our-organisation/some-repository/ 浏览器确认我没有写存储库的权限。我们的 团队的GitHub管理员能够在短时间内授予我的团队写访问权 好不容易,我终于把树枝推了上去。
我的解决办法是:
git remote rm origin
git remote add origin https://USERNAME@github.com/username/reponame.git
类似于Emi-C的答案,但没有密码。
你必须生成SSH密钥,并在设置中添加到你的github帐户中 转到你的项目,在那里你克隆里面运行这些命令
1-ssh keygen -t rsa -b 4096 -C "rajankumar148@gmail.com"
在命令之后,你会得到一些选项,路径和名称可以留空,你可以输入密码。
2-eval $(ssh-agent -s)。
3-ssh-add ~ / . ssh / id_rsa
在这个命令之后,您必须输入与第一个命令中创建的相同的密码
之后,你可以检查你的默认主目录或任何目录,它在终端上显示。pub文件打开并复制密钥和过去在github设置新的SSH
我试了所有的办法,但似乎都不管用。进一步的研究表明:
这里有一个解决问题的综合方法。 当你数到5。修复4,注意VS代码会要求认证。
如果您输入了密码,仍然得到身份验证错误,请执行以下操作。
转到你的GitHub菜单做设置->开发人员设置->个人访问令牌->生成新的令牌。并确保这些框都是按照下图选中的。生成一个访问令牌并将其保存在可访问的地方。 使用生成的令牌而不是密码。 然后继续执行步骤6。修复5
这些步骤可以在事后解决问题。