git push永远不会结束-只会到达Total行

ttisahbt  于 2023-04-10  发布在  Git
关注(0)|答案(6)|浏览(215)

预期行为

我编辑了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=1GIT_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不喜欢的字符或东西吗?

hl0ma9xz

hl0ma9xz1#

我只是有这个确切的问题,但原因是不同的。起源使用

git remote -v

result:origin pi@raspberrypi:/home/git/...git
我有一个用户在我的git仓库上没有写权限。
修复方法是删除origin并使用正确的用户重新添加origin

git remote rm origin
git remote add origin git@raspberrypi:/home/git/...git
oiopk7p5

oiopk7p52#

在我的例子中,更新从
git version 2.32.1 (Apple Git-133)

git version 2.37.1
帮助。
在Mac上,它可以很容易地用一行来完成:brew install git

kzmpq1sx

kzmpq1sx3#

是我的路由器!
最大的线索是,我试图SFTP的麻烦文件之一到服务器,它失败了.我已经安装了一个新的网件AC 1750智能无线路由器型号R6400昨天.为了解决我的问题,我只是拔掉网件路由器,并插入我的旧Linksys WRT 120 N.一切工作.
奇怪。你可能会认为,如果我在桌面上使用VPN,并在其中运行SSH,路由器将无法判断它发送的是什么类型的数据包。或者,如果它弄错了数据包,将破坏一切。我不明白。
我告诉Netgear我的问题,并表示我可能会返回路由器,并得到一些我可以安装开源固件的东西。他们的回应是沿着“也许你应该这样做”的路线,所以我做了。很高兴在布法罗路由器上运行OpenWRT,现在一切正常。

q0qdq0h2

q0qdq0h24#

我有这样的行为是出于不同的原因,希望这个答案能帮助别人:)
我在本地git服务器上的/srv/git目录下有所有的git仓库,用户名为git-user,拥有所有的文件。我看到像ssh://git-user@server/repo这样的URL来克隆仓库并进行更改,保证git-user拥有所有的文件。
我一直在为我的每个仓库从SVN切换到GIT。我从SVN仓库的最新文件中创建新仓库的流程(我不关心历史,它们只是个人项目)如下:

ssh <git server>
su -
su - git-user
git init --bare newgitrepo.git
exit

# Back to my desktop
cd git
git clone ssh://git-user@<git server>/srv/git/newgitrepo.git
cd newgitrepo
# Set up initial files - my local Workspace dir is where Eclipse has
# SVN projects already checked out
cp -r ../Workspace/<svn repo>/* .
cp ../Workspace/<svn repo>/<hidden dot files/dirs, except for .svn> .
# Create .gitignore files for stuff like compiled code directory
git add <everything but .git dir>
git commit -m 'Initial Import'
git push origin master

我有一个案例,我无法推送任何东西,而不会得到total行和没有进一步响应的恼人行为。我错过了服务器上的第三个命令(su-git-user),所以我以root身份创建了我的裸repo,导致所有文件都归root所有。解决方案当然是删除服务器上的裸repo,并以git-user身份重新创建它们。
这与GlenPeterson所说的这是一个服务器问题,而不是客户端问题。

bwntbbo3

bwntbbo35#

我在推送到gigalixir的git remote时遇到了这个问题。问题是他们的CLI无法保存推送到我的~/.netrc文件所需的密码。所以,如果你通过https推送到git remote,请检查你的~/.netrc文件是否包含这样的内容:

machine api.the_service.com
        login my@email.com
        password some_password
machine git.the_service.com
        login my@email.com
        password some_password (same as above)
k3bvogb1

k3bvogb16#

除了本帖中的所有答案外,请检查您正在推送的文件类型。
我的案例-2 files

  • 轻量级.jpg映像
    *.pdf文档

尝试的解决方案:

  • 更新git
  • 更新system
  • 重新添加远程

Actual issueHeavyweightpdf文件。
Solution

  • 在从commit中删除.pdf并重新尝试之后,所有内容都被推送到服务器。
  • 在单独提交中添加了.pdf,并成功推送到服务器。

相关问题