在将Git推送到远程仓库时,使用"git push origin master"命令会提示输入密码三次,但是并没有任何操作。

4

我有一个NAS,使用命令git --bare init创建了一个远程仓库。然后我用命令git clone ssh://ID@PathToDistantRepo在我的计算机上克隆了这个仓库,但是它告诉我我克隆了一个空的仓库。

到目前为止,我没有问题。

我添加东西,进行提交,一切都很好,没有错误,并且提交记录出现在历史记录中。

但是,当我运行git push origin master时,它会三次要求输入ssh连接的密码,然后什么都没有发生。我让它运行了半个小时,提示保持冻结,没有任何指示。

如果我添加“-verbose”选项,也没有新信息。

如果我运行git remote show origin,它会要求我输入密码,然后显示以下内容:

* remote origin
  Fetch URL: ssh://ID@PathToDistantRepo
  Push  URL: ssh://ID@PathToDistantRepo
  HEAD branch: (unknown)
  Local branch configured for 'git pull':
    master merges with remote master

我没有给你确切的网址,但它们很好,我搜索了一下网络,但可能是因为我不知道如何使用正确的关键词,所以我找不到任何信息。

非常感谢您的帮助。


首次尝试使用 git push -u origin --all。我会尝试的另一个调试选项是在本地文件夹上创建一个裸目录,使用相同的命令,看看是否作为测试起作用。此外-不确定,但由于您必须通过SSH连接到NAS,然后连接到服务器,我假设它有自己单独的git安装?但我不确定,它是否需要运行服务来处理本地推送请求?我不确定那个交接是如何发生的... - LightCC
1
也许这个有关系:https://dev59.com/gmQn5IYBdhLWcg3wVF_i#32792843 重新启动ssh代理和sshd服务器似乎解决了问题。 - tomptz
我已经测试了 git push -u origin --all 但没有新的内容。 在查看如何重新启动ssh代理之前,我尝试在同一设备上创建一个新的远程仓库,但里面几乎没有任何东西,只有一个文件夹和一个文本文件,推送命令完美地工作。 我要推送的文件夹很重,有 "1.05Go",因为它是一个Unity项目。 但我已经做过这个并且它可以工作。 我会让命令提示符长时间工作,以防它非常忙碌,并且在扫描所有文件之前不说任何话或者我不知道。 - Varden
如果你的问题特别针对于大提交,尝试增加postBuffer。我已经在下面更新了我的答案。 - tomptz
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
0

根据https://dev59.com/gmQn5IYBdhLWcg3wVF_i#32792843,重新启动SSH代理和sshd服务器可能会有所帮助。

假设您在Linux系统上,按以下方式重启SSH代理。

首先,找到代理PID:

eval "$(ssh-agent -s)"

这将返回PID号码(例如1234)。在下一个命令中使用此数字杀死代理:

kill -9 1234

要重新启动sshd服务,请参见https://www.cyberciti.biz/faq/howto-restart-ssh/ 如果您使用Ubuntu(systemd),可以直接执行: sudo systemctl restart ssh

如果特定问题发生在提交大的commit时,请尝试增加postBuffer:

git config --global http.postBuffer 2097152000 

这已被证明可以解决类似的问题,请参见https://dev59.com/7Gw15IYBdhLWcg3wA28A#26663047

由于您被要求输入SSH密码3次,另一个解决方案可能是设置SSH密钥进行身份验证,而不是使用密码。要这样做,请参见https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix


我正在使用Windows 10,这是我的结果: 我找到了SSH服务,当我使用它们成功地对一个新的存储库进行测试时,它们甚至没有启动。 所以我启动了它们,但仍然没有改变任何东西。 - Varden
我运行了 git config --global http.postBuffer 2097152000,但没有任何变化。关于被要求三次密码的问题,平常只需要输入一次密码就可以了,这很正常而且我也不介意。但是现在需要输入三次密码,这不正常,其他什么都没用...提交的文件夹很大,但填充了许多小文件,所以我预计需要长时间推送,但看起来甚至没有开始...我会尝试重新创建存储库,并进行多个小提交,因为在创建时有很多东西,但之后只需要小的推送。 - Varden
在NAS端需要重新启动sshd服务(这是从Windows机器连接的SSH服务器)。你试过了吗? - tomptz

0

经过多次测试,问题很可能是由于 Git 不适合处理许多大文件,因此将整个项目放入仓库并不是一种好的方法。问题出在 Unity 包上。

我需要更好地掌握 Git 的工作方式,以便更有针对性和细粒度地使用它,只放入对我有用的内容,这是我将来会做的。

感谢大家的帮助,至少给了我一些知识和对 Git 和 SSH 更好理解的开始。


你可能想考虑使用git-lfs,这是Git的一个扩展,专门针对大文件存储。请参阅https://git-lfs.github.com/。 - tomptz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,