`git push` -- 没有输出,什么都没发生。

7
touch test
git add test
git commit -m "test"
git push -u origin master

这个操作成功了,文件已经上传到仓库中。
rm test
cp -R ../website ./website
git rm test
git add website/
git commit -m "Initial"
git push -u origin master

这没有输出,而且似乎对存储库没有做任何更改。测试文件仍然存在于存储库中。

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

有人能帮忙吗?


已在客户端和服务器上重新创建分支,但没有成功。当只有一个文件时可以工作,但是它无法将网站文件夹推送到服务器。

我唯一看到的奇怪之处是:POST git-receive-pack (chunked)


2
你确定需要使用 -u 来推送吗?你的远程仓库是什么?git branch -v 命令输出的是什么?它们是你在线观看的位置吗? - rlegendi
你的分支比 'origin/master' 提前了1个提交。这强烈表明第二次推送没有成功。尝试在 git push 中添加 --verbose 选项以调试问题。 - user4815162342
@rlegendi 我不知道我是否需要它。 #git IRC 频道上的某个人告诉我要这样做。无论如何,没有使用“-u”同样的事情发生了。也就是说,什么都没有发生。 - RobinJ
@rlegendi $ git branch -v --> * master 55cfce5 [ahead 1] 初始 - RobinJ
@user4815162342 今天早上又尝试了一次。这次没有出现错误,只是在 git-receive-pack 的过程中停止了,没有进一步的输出。同样地,没有任何东西被推送到服务器上。 - RobinJ
显示剩余5条评论
6个回答

7

看起来这与 BitBucket 有关。另一个问题也遇到了同样的问题:Hanging at "POST git-receive-pack (chunked)"

解决方案是使用 Git+SSH 而不是 HTTP。它似乎只影响有几兆字节以上文件的仓库。


当使用SSH时,它实际上会显示一些进度,并且需要很长时间,因此看起来这可能是解决方案。不过有点奇怪和烦人的是我必须使用SSH密钥(在我看来,它们更像是一种麻烦而不是安全措施)。 - RobinJ
太好了!我认为SSH可以工作而HTTP不能是因为你不需要通过Web服务器或代理连接到git服务器。但老实说,我不确定。 - akraut
请查看以下说明(不仅限于被接受的答案):https://dev59.com/5Ww05IYBdhLWcg3wwEUS - David Russell

2

通常,如果您的提交大小大于预期,则会被分块。您可以在推送命令后添加--verbose以查看推送输出详细信息。

以下命令将解决此问题。这是最快的方法。

git config http.postBuffer 524288000

1

这对我来说不像是一个git错误。如果您使用的正是您展示的命令,那么../website目录的内容将不会被复制到./website目录中。尝试执行cp -R ../website ./website以复制所有内容。

此外,在复制后尝试执行git status以查看更改是否反映出来。通过执行git add .将存储库目录中的所有内容添加到git repo中。

请告诉我此操作的结果。另外,如果您可以更新问题并提供您的目录结构,我将不胜感激。


不,错误的 cp 命令是我问题中的笔误。http://shelr.tv/records/506dac239660807dc7000028 只要我想起命令,目录树就会跟着出现。 - RobinJ
这可能是您的HTTPS凭据。您尝试使用git+ssh协议而不是https吗? - automaticAllDramatic
此外,删除 auth〜 目录。你不需要它。 - automaticAllDramatic
这只是我的文本编辑器在保存“auth”文件时自动备份。 - RobinJ

0
如果您使用持久的SSH连接,可能会出现过期的连接问题。这在我使用持久SSH一年后第一次发生。打开您的.ssh/config文件并检查ControlPath,然后进入该路径并删除相应的文件。对我来说,它是/tmp/git@bitbucket.org:22。

0

只需尝试 git push,无需指定参数,因为您已经使用了 -u 选项一次。此外,从您的输出来看,Bitbucket服务器可能在那时候宕机了。


此刻以及从我尝试上传网站文件夹到Git存储库的每一刻,都无法上传? - RobinJ
在你编辑之前,我已经添加了这个答案,你没有提到你是否尝试重新创建你的存储库。 - Anton Guryanov

0

这种情况的一个常见原因是您输入了错误的SSH密钥密码。除非您清除缓存的凭据,否则git push将永远无法与该远程工作。

命令行git push origin master将不起作用,停滞不前,并且不会产生任何输出。

SmartGit可能会通过在推送期间自动填充错误的SSH密钥密码来“导致”此问题。单击“确定”将永久性地破坏“git push”,直到您进入首选项并清除该凭据为止。


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