预期行为
我编辑了file 1并提交,然后执行了以下操作
$ git push
NOTICE: Only authorized blah blah blah...
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 676 bytes | 0 bytes/s, done.
Total 7 (delta 4), reused 0 (delta 0)
To ssh://me@server:/opt/git/fooBar.git
28ad03d..73ae492 master -> master
$
问题
然后我在同一个项目中编辑file 2,提交并执行以下操作:
$ git push
NOTICE: Only authorized blah blah blah...
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (10/10), 1.42 KiB | 0 bytes/s, done.
Total 10 (delta 4), reused 0 (delta 0)
^C
注意到我是如何在最后使用CTRL-C(^C
)的吗?那是因为它从未完成。这不是预期的行为。
失败的应对机制
所以我:
cd ..
mv fooBar/ fooBar_bak/
git clone ssh://me@server:/opt/git/fooBar.git
cd fooBar
编辑一些其他的文本文件(只是添加了一个空行),推送,它工作了。这意味着我在失败的推送之前 * 和之后 * 成功地从/向相同的本地/远程存储库推送。
但是编辑它以前不喜欢的file 2?推送永远不会完成。file 3也是一样,它也不喜欢。我看不出这些文件有什么特别之处。
file 2和file 3是UTF-8格式,file 1是ASCII格式,但这不重要。
我尝试了git push hangs after Total line的所有解决方案,但没有一个对我有效。
我并不真正理解strace -efile -f git push
的输出,但没有什么能让我跳出来。
我等着。但这不是一个大的回收或一个大文件。
我在我的机器上使用Ubuntu 16.04和git版本2.7.4,在CentOS服务器上使用git版本1.7.1。我没有安装msysgit,git-for-windows或cygwin。git push -u origin master
也不行。git config http.postBuffer 524288000
没有任何区别。GIT_CURL_VERBOSE=1
和GIT_TRACE=1
没有影响。git config --global core.askpass "git-gui --askpass"
没有做任何事情,可能是因为我没有安装git-gui。
@RonanDejhero的建议:https://stackoverflow.com/a/21032615/1128668是什么让我看到,有些文件可以更改,提交和推送,有些不能。我尝试复制更改的文件,手动更改文件,并进行稍微不同的更改:不好。
在服务器上我做了sudo chown -R me.git-users /opt/git/
,但这也没有什么区别。当我过去遇到这样的问题时,这似乎有所帮助。
我在本地仓库和服务器/opt/git/fooBar. git中做了一个git gc
。
更新
我删除了我的本地存储库,克隆,编辑了file 2(git以前不喜欢被编辑),只添加了一个空行。提交,推送,成功了!然后我注解掉了十几行未使用的代码,提交推送,成功了!我能引入一个git不喜欢的字符或东西吗?
6条答案
按热度按时间hl0ma9xz1#
我只是有这个确切的问题,但原因是不同的。起源使用
result:origin pi@raspberrypi:/home/git/...git
我有一个用户在我的git仓库上没有写权限。
修复方法是删除origin并使用正确的用户重新添加origin
oiopk7p52#
在我的例子中,更新从
git version 2.32.1 (Apple Git-133)
到
git version 2.37.1
帮助。
在Mac上,它可以很容易地用一行来完成:
brew install git
kzmpq1sx3#
是我的路由器!
最大的线索是,我试图SFTP的麻烦文件之一到服务器,它失败了.我已经安装了一个新的网件AC 1750智能无线路由器型号R6400昨天.为了解决我的问题,我只是拔掉网件路由器,并插入我的旧Linksys WRT 120 N.一切工作.
奇怪。你可能会认为,如果我在桌面上使用VPN,并在其中运行SSH,路由器将无法判断它发送的是什么类型的数据包。或者,如果它弄错了数据包,将破坏一切。我不明白。
我告诉Netgear我的问题,并表示我可能会返回路由器,并得到一些我可以安装开源固件的东西。他们的回应是沿着“也许你应该这样做”的路线,所以我做了。很高兴在布法罗路由器上运行OpenWRT,现在一切正常。
q0qdq0h24#
我有这样的行为是出于不同的原因,希望这个答案能帮助别人:)
我在本地git服务器上的/srv/git目录下有所有的git仓库,用户名为git-user,拥有所有的文件。我看到像ssh://git-user@server/repo这样的URL来克隆仓库并进行更改,保证git-user拥有所有的文件。
我一直在为我的每个仓库从SVN切换到GIT。我从SVN仓库的最新文件中创建新仓库的流程(我不关心历史,它们只是个人项目)如下:
我有一个案例,我无法推送任何东西,而不会得到total行和没有进一步响应的恼人行为。我错过了服务器上的第三个命令(su-git-user),所以我以root身份创建了我的裸repo,导致所有文件都归root所有。解决方案当然是删除服务器上的裸repo,并以git-user身份重新创建它们。
这与GlenPeterson所说的这是一个服务器问题,而不是客户端问题。
bwntbbo35#
我在推送到
gigalixir
的git remote时遇到了这个问题。问题是他们的CLI无法保存推送到我的~/.netrc
文件所需的密码。所以,如果你通过https
推送到git remote,请检查你的~/.netrc
文件是否包含这样的内容:k3bvogb16#
除了本帖中的所有答案外,请检查您正在推送的文件类型。
我的案例-
2 files
:.jpg
映像*重
.pdf
文档尝试的解决方案:
git
system
Actual issue
:Heavyweightpdf文件。Solution
:.pdf
并重新尝试之后,所有内容都被推送到服务器。.pdf
,并成功推送到服务器。