git push到远程存储库“无法从远程存储库读取”

我搜索了一会儿,但我找不到我的问题的解决方案。

我有一个服务器,我可以通过ssh连接到用户名git和本地git存储库。
现在我想把我的本地存储库到服务器上新创建的。

这里是我做的:

>在/home/git/test.git中创建了一个git存储库
>将存储库初始化为裸
>在本地机器上添加远程存储库
git remote add test ssh:// git @ serverIp:/home/git/test.git
>现在我执行push命令:
git push test master

I always get the

fatal: could not read from remote repository

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

我正在一个本地的Windows 7机器,并希望上传到一个linux服务器。
我可以通过ssh与git用户登录。
我也试图做这个作为root用户(使事情工作一次)与相同的结果。
我从来没有被要求的ssh密码。

我真的不知道我做错了什么。
在你称之为重复之前,我搜索了很多这个问题,没有人似乎谈论同样的问题。

更新:

>“which git”返回/ usr / bin / git
> PATH echo包括/ usr / bin
> id_rsa和id_rsa.pub文件都设置和使用passphrase
> ssh git @ serverIp其中git-receive-pack也工作,并返回/ usr / bin / git-receive-pack
> ssh git @ serverIp ls /home/git/test.git工程
>所有相关目录为chmod 755
> git是存储库的所有者
> auth.log文件在尝试的push命令上没有新的条目
> GIT_TRACE = 2 git push test master返回:

‘C:\Program Files (x86)\PuTTY\plink.exe’ ‘-batch’ ‘git@serverIp’ ‘git-receive-pack ‘\”/home/git/test.git’\”’ fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

最佳答案
在这种情况下,使用openssh over putty是关键。

原始答案(调试提示)

I can log in via ssh with the git user.

这意味着这个工作:

ssh git@serverIp

您在%HOME%/。ssh /中定义了一个HOME变量,以及ssh公共/私有密钥(id_rsa / id_rsa.pub)。

This question建议不同的网址:

git remote set-url test git@serverIp:/home/git/test.git

确保你创建了git repo作为git(而不是root,当你创建git帐户,如this question)。
ssh git @ serverIp“which git”应该返回git可执行文件的路径。

还要检查所有父目录是否为用户git或组gitgroup设置了相关的x(execute)位,运行ls -ld / home / home / git /home/git/test.git。
此外,获取更多的信息为git命令可以做到:

> git push –verbose
要么:
> GIT_TRACE = 2 git push test master

如果您有一个私有ssh密钥和密码,最好首先测试这些ssh命令与私人ssh密钥没有密码保护,看看是否仍然存在问题。
或者,您可以保留密码保护的ssh密钥,但double-check your .bashrc as in this answer

对于任何ssh连接问题(需要git的密码),请检查:

> /var/log/auth.log,
> sshd debug session

在你的情况下,因为它与ssh git @ serverIp(交互式安全shell),但不是用git(它打开一个非交互安全shell),看看this thread,它引用this one

When ssh is started with a commandline, a non-interactive non-login shell is started.
However…bash does not use $BASH_ENV in this case, so setting it in ~/.ssh/environment (e.g. to /etc/profile) doesn’t help.
What bash does is source /etc/bashrc and ~/.bashrc.

确保/ etc / profile确实定义了path for git,因为一个non-login account could be used here(似乎是这里的情况,因为ssh git @ serverIp“git”工作,而ssh git @ serverIp“git –version”应该也)。

但检查正确的问题,并测试一个chmod 755在/ home,/ home / git和/home/git/test.git。

转载注明原文:git push到远程存储库“无法从远程存储库读取” - 代码日志