git:fatal:无法从远程存储库中读取

时间:2012-11-22 09:18:24

标签: git

我正在尝试使用http://danielmiessler.com/study/git/#website设置git来管理我的网站。

我已经完成了说明的最后一步:git push website + master:refs / heads / master

我正在使用win7中的git ming32命令行

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

这里的一个问题可能是该计划正在寻找Bill@***.com。当我通过ssh连接到我的网站时,我有一个不同的用户名(让我们说'abc')。所以也许这应该是abc@***.com。如果是这样,我不知道如何改变这个或者我是否可以推动别名

53 个答案:

答案 0 :(得分:107)

您可以指定SSH应作为远程URL的一部分发送到远程系统的用户名。在远程主机名之前输入用户名,后跟@

git remote set-url website abc@***.com:path/to/repo

答案 1 :(得分:105)

确保.git/config

中的网址正确无误
url = git@github.com:username/repo.git

如果是您的第一次推送,则需要设置正确的上游

$ git push -u origin master

您可以通过以下方式检查使用的密钥:

$ ssh -vvv git@github.com

回复应包含以下内容:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

此外,还可以在~/.ssh/config中为ssh定义规则,例如基于别名:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

您可以设置连接到不同的端口,为每个别名使用不同的用户名等。

答案 2 :(得分:100)

您的ssh密钥很可能已从ssh代理中删除

ssh-add ~/.ssh/id_rsa

其中id_rsa是与git repo相关联的ssh密钥

答案 3 :(得分:88)

我刚才面临同样的问题......

我的.git / config

url = git@github.com:manishnakar/polymer-demo.git

我用

替换了它
url = https://github.com/manishnakar/polymer-demo.git 

现在可以使用了:)

答案 4 :(得分:22)

尝试使用unset GIT_SSH删除GIT_SSH环境变量。这是我的问题的原因。

答案 5 :(得分:11)

这通常是由于SSH密钥与远程不匹配引起的。

<强>解决方案:

  1. 转到终端并键入以下命令(Mac,Linux)替换为您的电子邮件ID。

    ssh-keygen -t rsa -C&#34; you@email.com"

  2. 使用以下命令从单词ssh开始复制生成的密钥。

    cat~ / .ssh / id_rsa.pub

  3. 将其粘贴到遥控器的github,bitbucket或gitlab中。
  4. 保存。

答案 6 :(得分:9)

我为Bitbucket的ssh私钥以及在ssh代理中的正确私钥错误。

首先删除所有键

ssh-add -D

然后只添加了正确的键。

ssh-add ~/.ssh/id_rsa

答案 7 :(得分:7)

在做了一些研究之后我终于得到了解决方案,你已经为plink.exe路径声明了一个环境变量。因此,如果您删除该路径,请重新打开git bash并尝试通过SSH克隆它将起作用。

请参阅此链接

http://sourceforge.net/p/forge/site-support/2959/#204c

答案 8 :(得分:6)

我遇到了同样的问题。

此错误表示您尚未指定代码将推送的远程URL位置。

您可以通过2种(主要)方式设置远程URL:

  1. 通过在Git Bash上执行命令指定远程URL。

    • 导航到您的项目目录

    • 打开Git Bash

    • 执行命令:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. 在配置文件中直接提及远程URL

    • 导航到您的项目目录

    • 转到 .git 文件夹

    • 在文本编辑器中打开 config 文件

    • 复制并粘贴到以下行

      • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*
  3. 有关详细信息,请访问此link

答案 9 :(得分:5)

我有同样的错误。 解决方案如下: 我在.git/config修正了我的网址。 刚刚从HTTPS克隆URL复制了它。那将是这样的:

url = https://github.com/*your*git*name*/*your*git*app*.git

有效。

答案 10 :(得分:5)

通过在终端上执行以下命令确保ssh-agent正在运行:

eval $(ssh-agent -s)

来源:Github documentation

答案 11 :(得分:4)

如果你使用Gitlab而不是你可能需要登录并接受Gitlab新术语,那么在尝试拉动或推动之前。

答案 12 :(得分:2)

如果&#34; git push origin master&#34;命令你看到错误&#34;无法从远程存储库中读取&#34;然后尝试一下

1.ssh-keygen -t rsa -b 4096 -C "youremail"
2.eval $(ssh-agent -s)
3.ssh-add ~/.ssh/id_rsa
4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
6. now give git push origin master 

答案 13 :(得分:2)

在我的情况下,我使用带密码的ssh密钥来验证github。我没有在Windows中正确设置选美(仅限cygwin)。缺少的步骤是将git_ssh环境变量指向plink.exe。此外,您需要将github.com放入plink known_hosts。

   plink github.com
   y
   <then ctrl-c>

希望这有帮助!

我确定希望intellij会给我一个更有用的错误,或者更好的是让我输入ssh密钥密码。

答案 14 :(得分:2)

实际上我尝试了很多东西让它在Win7上运行,因为改变了SSH exectun fron native to build-it和backwards以及相同的错误。 偶然的机会,我在&#34; .git / config&#34;中将其更改为HTTPS文件为:

[remote "origin"]
        url = https://github.com/user_name/repository_name.git
        fetch = +refs/heads/*:refs/remotes/origin/*

它终于奏效了。所以也许它也适合你。

答案 15 :(得分:2)

就我而言,我在办公室使用公司网络(没有互联网连接)。为了从github中提取代码,我在gitbash中设置了https代理,然后使用https代替ssh来提取代码,它工作正常。但是,当推送代码时,https代理将无法正常工作。因此,无论是切换到Internet网络(使用互联网连接)还是设置ssh代理都可以解决问题。

答案 16 :(得分:2)

另一种解决方法:

由于网络问题,有时会发生这种情况。我完全不了解根本问题,但切换到不同的子网或使用VPN解决了它

答案 17 :(得分:2)

在你的.git / config文件中

[remote "YOUR_APP_NAME"]
    url = git@heroku.com:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

简单地说

git push YOUR_APP_NAME master:master 

答案 18 :(得分:1)

遇到这个问题是因为我在中国的防火墙很重要...

kex_exchange_identification:连接被远程主机关闭致命: 无法从远程存储库读取。

请确保您具有正确的访问权限和存储库 存在。

答案 19 :(得分:1)

就我而言,问题及其解决方案就写在我的眼前。那天早些时候,我编辑了/ etc / ssh / ssh_config文件并添加了一些键。错误说:

rollup --config rollup.config.dev.js
rollup --config rollup.config.prod.js

我删除了/etc/ssh/ssh_config: line 52: Bad configuration option: allowusers /etc/ssh/ssh_config: terminating, 1 bad configuration options fatal: Could not read from remote repository. 键,它的值和所有功能都按预期工作。

答案 20 :(得分:1)

您需要对Git使用HTTPS:

将此输入终端:

$ git remote set-url origin abc@***.com:path/to/httpURLRepo

然后提交:

$ git add .
$ git commit -m "This is the commit message"

答案 21 :(得分:1)

有时您需要使用完整的URL和ssh://方案:

ssh://git@yourhost:port/path/repo.git

或具有指定端口:

ssh://git@yourhost:port/path/repo.git

对我来说,它解决了这个问题。

答案 22 :(得分:1)

如果您已设置 recevepack uppackpack 就我而言,我在错误设置它们后得到了错误

receivepack = powershell git receive-pack

在我的情况下,在.git/config

您可以按照下面的答案将其删除

https://stackoverflow.com/a/26207308/7668448

或直接修改.git/config

答案 23 :(得分:1)

不是OP的问题,但是如果您在 GitHub组织/团队中工作,则可能没有对该存储库的写权限。不幸的是,git没有显示更多特定的权限错误。就我而言,我在一个私有存储库上工作,并获得了“分类”或“读取”访问权限。

有关每个权限级别的存储库访问的更多信息,请参见GitHub documentation

在GitHub上进行更改的链接是https://github.com/orgs/ORGANISATION_NAME/teams/TEAM_NAME/repositories,您可以在其中更改授予团队的权限。

Screenshot of github organisation's team's repository's tab

答案 24 :(得分:1)

如果您有多个用户从同一客户端系统访问同一git服务器,则可能使用了错误的访问密钥来尝试访问该服务器。

ssh -T git@gitlab.com

此命令将显示您正在尝试与哪个用户进行推送。

简单的解决方案是从git服务器中删除未使用的用户公共密钥。

然后尝试git获取,拉动或推入。

答案 25 :(得分:1)

我有一个非常好的工作git,当我试图推向主人时突然出现了这个错误。正如我发现的那样,这是因为存储库主机存在问题。

如果您使用GitHub或Bitbucket,您可以轻松查看状态

https://status.github.com/messageshttps://status.bitbucket.org/

enter image description here

答案 26 :(得分:1)

我遇到了同样的问题,并通过更新到最新的git版本来解决了

答案 27 :(得分:1)

根据我的经验,发生此问题的原因之一是因为您有不稳定的互联网连接

答案 28 :(得分:1)

更换电脑后我发现了这个错误。我正在使用SourceTree和Bitbucket。

所以我必须在新计算机上添加SourceTree生成的SSH密钥,在Bitbucket设置&gt;安全&gt; SSH密钥,同时连接到网络上的Bitbucket帐户。

答案 29 :(得分:1)

我有同样的问题,过了一会儿,我看到我在root用户(使用sudo -s)下。愿这对某人有所帮助。

答案 30 :(得分:0)

添加到“我有同样的问题和......”,我也在Windows中通过Ming32(git bash)shell使用git。

在我的情况下,repo要求我键入密码,而不是使用SSH密钥,但是提示输入密码,只是说“致命:无法读取......”,尽管我可以正常使用plink和ssh进行SSH,并设置了两个已知主机密钥。

我在这里和其他SO中尝试了大部分建议。

我最终发现在Powershell中运行良好,但没有在git bash中运行,没有任何更改或更正。

答案 31 :(得分:0)

我只是想分享一下我找到了一个简单的解决方法:

拒绝访问。 致命:无法从远程存储库读取。 请确保您拥有正确的访问权限 存储库存在。

只需从gitlab注销然后再次登录。然后应该解决问题。

答案 32 :(得分:0)

使用putty / pageant时,请确保您没有忘记将正确的SSH密钥添加到分页,否则会出现此错误。 DUH

答案 33 :(得分:0)

在我的情况下,它是postBuffer ..

git config --global http.postBuffer 524288000

参考读物:https://gist.github.com/marcusoftnet/1177936

答案 34 :(得分:0)

转到MINGW32终端把这个命令:git branch --set-upstream-to = origin /(分支名称)

答案 35 :(得分:0)

如果您仍然遇到同样的错误,请确保在git设置 - &gt; ssh标签 - &gt; ssh客户端使用设置为 openSSH enter image description here

答案 36 :(得分:0)

我有同样的错误,这让我得到了这个对我没有帮助的答案。 我第一次尝试使用以下命令创建一个新的“裸”存储库来跟踪NTFS位置:

cd myrepository
git init --bare \\myserver.mycompany.local\myrepository.git
git init
git status
git add .
git status
git commit -m "Initial Commit"
git remote add origin \\myserver.mycompany.local\myrepository.git
git push -u origin master
git status

当我尝试添加原点以设置(新)跟踪的上游分支时,我的问题是在NTFS位置使用反斜杠而不是正斜杠。

我必须使用以下方法删除原点:

git remote rm origin

然后使用预期的正斜杠

再次添加原点
git remote add origin //myserver.mycompany.local/myrepository.git

希望这有助于将来。

答案 37 :(得分:0)

就我而言,我尝试使用sudo进行克隆。根据Github的文档,您不应将sudo与git clone一起使用: https://help.github.com/en/github/authenticating-to-github/error-permission-denied-publickey#should-the-sudo-command-be-used-with-git

我所做的是授予当前用户编辑目录(Debian 9)的权限:

chown myuser:root .

然后克隆而没有sudo,它起作用了。

答案 38 :(得分:0)

我现在遇到问题了,可以通过git config user.email "youremail"来解决。


更新: 我发现了根本原因,可能是我的网络差和代理服务器差。

答案 39 :(得分:0)

可能是网络问题。

尝试执行ssh -vvvT git@gitlab.com。如果服务器意外挂起,则可能是网络连接不稳定。

将以下内容放入〜/ .ssh / config

IPQoS lowdelay throughput

答案 40 :(得分:0)

我通过使用sudo su切换到root来解决了这个问题。

答案 41 :(得分:0)

我通过输入多次错误密码遇到此问题。

所以我必须将MaxAuthTries更改为更大的数字:

打开服务器端的sshd_config

vim  /etc/ssh/sshd_config

更改MaxAuthTries编号:

MaxAuthTries 100    # there I change to 100, you can change to a bigger than your current tries number

答案 42 :(得分:0)

我在Windows 10上使用gitbash时遇到了这个问题。我尝试了几种方法来解决此问题,其中主要的是:

  1. 重新创建了我的ssh密钥,并更新为bitbucket。没有帮助
  2. 使用this打开调试,发现我收到了here询问的“通道0上的外壳请求失败”
  3. 重新启动Windows PC

以上方法均无济于事。我最终重新安装了Git for windows,与我做的其他事情相比,只花了几分钟,就解决了问题!

答案 43 :(得分:0)

我间歇性地遇到此问题,大多数情况下它不会给出错误消息。对我来说,解决方案是在LDAP服务器的IP地址更改后正确配置LDAP。

LDAP的/etc/gitlab/gitlab.rb配置指向一个不存在的IP地址,因此将主机更改为指向LDAP服务器的正确主机名可以解决此问题。

要诊断问题,请使用gitlab-ctl tail命令来帮助您查找堆栈跟踪。对我来说,我找到了这个堆栈跟踪:

==> /var/log/gitlab/gitlab-rails/production.log <==

Net::LDAP::Error (No route to host - connect(2) for 10.10.10.12:389):
  /opt/gitlab/embedded/lib/ruby/gems/2.3.0/gems/net-ldap-0.16.0/lib/net/ldap/connection.rb:72:in `open_connection'
...

/etc/gitlab/gitlab.rb中的主机值进行更改

gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: 
     label: 'My LDAP'
     # this was an IP address
     # host: '10.10.10.12'
     host: 'internal-ldap-server' # this is the fix
     port: 389

更改上面的配置文件后,请确保重新配置gitlab

gitlab-ctl reconfigure

答案 44 :(得分:0)

我尝试了evreything,包括生成新密钥,添加到Github帐户,编辑 .ssh / config .git / config 。但是仍然给了我同样的错误。 然后我尝试了以下命令,它确实可以正常工作。

ssh-agent bash -c ssh-add ~/.ssh/id_rsa; git clone git@github.com:username/repo.git'

答案 45 :(得分:0)

我通过重启终端(打开新窗口/标签)解决了这个问题。

因此,如果您真的不想/不需要理解潜在的问题,那么在深入研究之前,可以尝试使用测试方法:)

答案 46 :(得分:0)

我在尝试将代码从工作推送到个人git时遇到此错误-默认指向工作git。 因此,我按照以下步骤操作:

  1. 进入我的个人git帐户并使用默认设置创建回购
  2. 在终端上,git remote添加源git@github.com:/。git
  3. git push --set-upstream原始主机,确保原始在上游,并且仅使用git push可以进行下一次提交。

由于某种原因,没有其他方法对我有用。希望这对使用2个或更多git帐户的人有所帮助。

答案 47 :(得分:0)

我建议检查您使用git remote -v配置的所有遥控器如果您将已将repo配置为已删除的遥控器,则会收到以下错误消息:fatal: Could not read from remote repository. Please make sure you have the correct access rightsand the repository exists.即使尝试推或拉到另一个(现有的)遥控器。因此,如果您有一个已删除的遥控器,则可以使用git remote remove name-of-remote-to-remove删除,之后您可以毫无问题地推送或拉动现有的遥控器。

答案 48 :(得分:0)

user@server:/etc/nginx$ cat .git/config 
...
[remote "origin"]
    url = git@gitlab.com:user/.git
    fetch = +refs/heads/*:refs/remotes/origin/*
...
  1. 使用ssh而不是https。
  2. 在git中使用ssh密钥(添加ssh密钥)。
  3. 如果您是root用户,请使用ssh密钥。
  4. $ sudo ssh-keygen
    $ cat /root/.ssh/id_rsa.pub 
    
    $ git init
    $ git add file
    $ git commit -m "add first file"
    $ git remote add origin git@gitlab.com:user/example.git 
    $ git push -u origin master
    

答案 49 :(得分:0)

我遇到了同样的问题;只需在命令窗口中运行它:

git remote add origin https://your/repository/url

答案 50 :(得分:-1)

我只是想补充一下这个问题。我让Git设置使用PLink和Pageant进行身份验证,我也收到了错误FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)。我有Pageant打开但错误仍然出现。问题?我没有在Pageant中加载私钥(要添加密钥,请关注these instructions)。就这么简单。

答案 51 :(得分:-1)

对于那些在私人远程仓库上遇到此问题的人。确保您已接受远程服务器上的Xcode协议:我们花了几周时间才找到此修复程序

从命令行使用此命令:sudo xcodebuild -license

答案 52 :(得分:-6)

我也遇到了同样的问题,经过多次尝试后我发现它们无效。 最后,我用了

$ git push origin master

有效!

强烈推荐网站:study git in a day