【问题标题】:Able to push, fetch but not pull能够推,取但不能拉
【发布时间】:2014-02-27 23:48:38
【问题描述】:

所以我只花了大约 4 小时试图让一个在 Windows 上的 SSH URL 下运行的 repo,我快到了,但我遇到了这个奇怪的问题。

我可以使用

git push origin master
git fetch origin master
ssh git@github. #tells me authentication is successful but shell access is not allowed

以及所有本地命令。但是,当我尝试执行 git pull 时,我得到:

-bash-4.1$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
-bash-4.1$

我在%HOME%/.ssh 下确实有id_rsaid_rsa.pub,并且公钥已添加到我的GitHub 帐户中。我的 git URL 也是正确的。

编辑

-bash-4.1$ git --version
git version 1.8.5.2.msysgit.0

【问题讨论】:

    标签: git github cygwin msysgit mintty


    【解决方案1】:

    问题可能仍然存在,因为gitcygwin 有不同的.ssh 目录。

    当您执行ssh git@github 时,它使用cygwin.ssh 文件夹中指定的那个,但当您执行git pull 时,它使用git bash's .ssh 文件夹中的id_rsa

    查看我的问题 => ssh clone not cloning repo in git

    【讨论】:

    • 宾果游戏! git pull 正在从 cygwin 的 /home//.ssh 读取,而 ssh 正在从 %HOME%/.ssh 读取!奇怪的是如何从 %HOME% 获取和推送读取,但拉取却没有......
    • @XrXrXr 我有同样的问题,但我可以做 git pull 和 clone,只是不能 git push。 (我也在cygwin下。)你知道这两个.ssh文件夹到底在哪里吗?对我来说,私钥存储在 ~/.ssh 文件夹中。 ($HOME /home/<name>) 在cygwin中,which git 将给出/usr/bin/git
    • @WeishiZeng 这个问题太老了,我什至都犹豫要不要回答这个问题。这是:%HOMEPATH% -> \Users\{username}%HOME -> /cygdrive/c/Users/{username}。 %HOMEPATH% 的默认值由 Windows 设置。 %HOME% 由 cygwin 设置
    • %USERPROFILE% 也可能有用。阅读en.wikipedia.org/wiki/Environment_variable
    • @XrXrXr 感谢您仍然回复。我想我把你弄糊涂了,我们可能不会遇到同样的问题。我在 Windows 7 上的 Cygwin 中运行 git push。我在 Cygwin 中安装了 git 和 ssh。 (在 windows C:\Users\{username} 中,没有任何 .ssh 文件夹。)
    【解决方案2】:

    这是我解决问题的方法:

    cygwin64/home/<username>/.ssh下创建一个名为config的文件

    IdentityFile <path to your private key> 添加到它

    【讨论】:

      【解决方案3】:

      您可能是从不同的位置拉车吗?

      试试:

      git pull origin master
      

      【讨论】: