能推不能拉git

I can push but not pull git

我刚刚在 Gitlab 上创建了一个新的 git 存储库。

我按以下方式初始化并推送了一个已经填充的目录:

git init
git remote add origin git@gitlab.com:username/reponame.git
git add .
git commit -m 'first commit'

git push -u origin master

一切如期进行。但是,当我尝试从回购协议中撤回时,我得到

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

此错误出现在:

git pull
git fetch

它没有出现:

git push

推送工作正常,我对推送进行了多次更改...

我最初确实有几次弄错了我的 ssh 密码,并首先尝试推送一个空的 repo。

这里有什么问题?

您遇到的错误是 SSH 错误。当您使用 user@host:path 语法时,Git 使用 SSH,但 git pullgit push 之间的区别在于 身份验证之后(和这个错误)。所以这不是 push/pull 的问题,但它必须是你调用它的方式(例如,因为你从设置了不同环境变量的两个不同终端调用了 git pullgit push)。

你能运行在终端中吗:

git pull; git push

?

实际上,由于这只是一个 SSH 问题,您也可以使用 ssh 本身进行调试:

ssh -vvv git@gitlab.com:username/reponame.git

我认为发生了 SSH 错误。 Troubleshoot the following :

  1. 检查您是否确实连接到服务器: ssh -vT git@github.com
  2. 确保您的密钥与正在使用的密钥相同:

    # start the ssh-agent in the background
    eval "$(ssh-agent -s)"
    # Agent pid 59566
    ssh-add -l
    # 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
    
  3. 仔细检查您的 SSH 密钥:https://help.github.com/articles/generating-ssh-keys

好的,它出现了。

Git init 生成了属于 root 的 FETCH_HEAD 文件。 .git/ 的其余部分是我的用户。

我不得不将文件的所有权更改为我的用户,然后问题就解决了。

为什么它不是简单地拒绝我访问我不知道的文件的权限。