我编辑了file1,已提交并执行了此操作
$ 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
$
然后我在同一个项目中编辑了file2,提交并执行了此操作:
$ 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
)?那是因为它从未完成。这是 NOT 预期的行为。
所以我:
cd ..
mv fooBar/ fooBar_bak/
git clone ssh://me@server:/opt/git/fooBar.git
cd fooBar
编辑其他一些文本文件(只添加一个空白行),推送,并且它有效。这意味着我在推送失败之后和之前成功地从/向同一个本地/远程存储库推送。
但编辑file2它以前不喜欢?推动永远不会完成。与file3不同,它也不喜欢。我没有看到这些文件有什么特别之处。
嗯,file2和file3是UTF-8,file1是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
。没有快乐。
我删除了我的本地仓库,克隆,编辑过的文件2(之前git不喜欢被编辑)只用 添加一个空行。承诺,推动,它的工作!然后我评论了十几行未使用的代码,提交推送,并且它有效!我可以介绍一个git不喜欢的角色或其他东西吗?
答案 0 :(得分:3)
出于不同的原因,我有这种行为,希望这个答案有助于其他人:)
我的本地git服务器上有一个目录,位于/ srv / git的所有我的git repos,以及拥有所有文件的用户名为git-user。我看到像ssh:// git-user @ server / repo这样的URL来克隆repos并进行更改,保证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
我有一个回购的案例,如果没有得到总线的这种恼人的行为而没有进一步的回应,我就无法推动任何事情。我错过了服务器上的第3个命令(su - git-user),所以我以root身份创建了我的裸仓库,导致所有文件都被root拥有。当然,解决方案只是删除服务器上的裸仓库并将其重新创建为git-user。
这与GlenPeterson所说的服务器问题有关,而不是客户端问题。
答案 1 :(得分:1)
这是我的路由器?!?!?!
最大的线索是我尝试将一个麻烦的文件SFTP到服务器并且失败了。我昨天安装了新的Netgear AC1750智能WiFi路由器型号R6400。为了解决我的问题,我只需拔掉Netgear路由器并插入旧的Linksys WRT120N。一切正常。
怪异。您认为如果我在桌面上使用VPN并在其中运行SSH,路由器将无法分辨它发送的数据包类型。或者,如果它搞砸了会破坏一切的数据包。我不明白。
我告诉Netgear我的问题,并表示我可能会返回路由器并获得一些我可以安装开源固件的东西。他们的反应是&#34;也许你应该这样做&#34;所以我做了。现在,在Buffalo路由器上运行OpenWRT,一切正常。
答案 2 :(得分:0)
我刚才有这个问题,但原因不同了。原点使用
git remote rm origin
git remote add origin git@raspberrypi:/home/git/...git
结果:origin pi @ raspberrypi:/ home / git / ... git
我的用户在我的git repo上没有写入权限。
修复方法是删除并使用正确的用户
重新添加来源jekyll serve > /dev/null 2>&1 & sleep 5 && open "http://localhost:4000"
答案 3 :(得分:0)
我在推送到gigalixir
的git远程时遇到了这个问题。问题是他们的CLI无法保存推送到我的~/.netrc
文件所需的密码。因此,如果您通过https
推送到git远程,请检查您的~/.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)