[git] [已解决] 在windows系统上使用msysgit / git / tortoisegit,访问git协议的仓库时。git push会卡住没反应。

发现按照git push 卡住去google,能搜到不少之前同行发的blog有提到,但貌似没有解决的。这个问题在msysgit的最新版已经解决了,希望这个solution扩散出去。让更多的程序猿同学看到。

=====================

啊啊啊,研究了两天,终于找到solution了。。先仰天长啸一会儿

=====================

项目组使用的server挂掉了,硬盘损毁,svn等好多内容不再可用,恢复无望。

虽然我们的代码之前并未怎么在上面放,但是前车之鉴,这个时候就体现除了git的高大上了。于是准备抛弃之前搭建的svn,搞个git。

在闲置的mac server上使用gitosis搭建,跑起了git daemon。使用ssh-gen来checkin,觉得好方便有木有!!!高大上有木有!!!

直到我在windows里面挂掉了。。。

大概是这样的(从原帖copy的):

git clone git://xxx.xxx/xxx.git

然后添加文件,编辑,git add,commit,然后push,结果:

[master 9447645] test
1 file changed, 1 insertion(+)
Counting objects: 20, done.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (18/18)

就此卡住不动,变更也没有push进去。。。。进不去。。。不去。。。去。。。

还以为是自己打开的方式不对,各种重试,重试,重试,换个姿势,重试。。。结果,google吧(顺便鄙视百度,毛也搜不出来),翻遍互联网终于等到你~还好我没放弃。

windows的git工具,甭管是gui还是command tool,统统是基于msysgit的。而msysgit在实现上,有一点儿小瑕疵,查了万千资料,发现这个问题,由于开源的贡献者们太少太忙太不容易,耽误了4年没解决。据说是对什么side-bind-64bit的支持不好导致的。what the hell! 谁晓得那是个啥。。。

搜遍了各种solution,有牛人在server端修改git的binary文件,据说可以糊弄过关。但我不是在linux里面搭建的git server,而是mac;也没在binary文件里面找到那个要修改的string。

最后终于发现开源大牛们给出了一个解决办法(为毛早没发现啊,足足两天啊。。。),在msysgit的最新版本1.9.4里,可以通过一个设置来摆平:

在git的config里面添加:

git config --global sendpack.sideband false

对我来讲,it works fine.

从此git任我行。怎么push怎么酷炫。

妈妈再也不用担心我的server挂掉了。一行代码费了两天牛劲,虽然感觉好像被耍了;但还是觉得挺充实的。

以上。

顺便附上这个问题旷日持久的讨论:

https://github.com/msysgit/git/issues/101#

再次感谢开源的大牛们

哦,对了,他们绝大部分看不懂中文: A BIG BIG THANK TO THE GUYS WHO IS WORKING FOR THE OPEN SOURCE PROJECTS!

时间: 2024-10-12 12:27:40

[git] [已解决] 在windows系统上使用msysgit / git / tortoisegit,访问git协议的仓库时。git push会卡住没反应。的相关文章

解决Tomcat6解压版在64位windows系统上无法启动服务的问题

解决Tomcat6解压版在64位windows系统上无法启动服务的问题 由于客户环境为64位windows系统,开发环境一直用32位.tomcat使用6.0.20非安装版.部署时发现在64位系统下,注册服务后无法正常启动服务(直接运行startup.bat可以成功启动tomcat),日志中报错信息为: 引用 [174  javajni.c] [error] %1 不是有效的 Win32 应用程序. [994  prunsrv.c] [error] Failed creating java D:\

在Linux和Windows系统上安装Nginx服务器的教程

在Linux和Windows系统上安装Nginx服务器的教程 ?1.在CentOS系统上安装Nginx 在 CentOS6 版本的 EPEL 源中,已经加入了 nginx 的 rpm 包,不过此 RPM 包版本较低.如果需要更新版本,可以使用官方制作的 rpm 包,或者使用源码包编译安装. 还可以使用一些二次开发功能增强的 nginx 版本,例如淘宝的 Tengine 和 OpenResty 都是不错的选择.1.1 常用编译参数 ??? --prefix=PATH:指定 nginx 的安装目录?

windows系统上安装与使用Android NDK r5

windows系统上安装与使用Android NDK r5  很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单的android应用. 一:什么是NDK? NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和 java 应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK 集成了交叉编译器,并提供了相应的mk 文件隔离CPU.平台.ABI 等差异,开发人员只需要简

oracle监听服务在windows系统上设置为自动重启但是不成功?

问:oracle安装在windows 系统上,服务设置为自动重启,但是没有系统启动后,oracle监听服务没有启动成功答:一种变相的解决的方法,使用计划任务启动,启动的脚本为:@echo  offping -n 10 127.0.0.1 > nulsc start OracleOraDb11g_home1TNSListener > nulexit@echo  on

Windows系统上安装zabbix_agent

Zabbix概述 Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti.Nagios类似,提供分布式监控以及集中的Web管理界面.被监控对象只要支持SNMP协议或者运行Zabbix_agents代理程序即可. Zabbix具备常见商业监控软件所具备的功能:主机性能监控.网络设备性能监控.数据库性能监控.ftp等等通用协议的监控,能够利用灵活的可定制警告机制,允许用户对事件发送基于E-mail的警告,可以保证相关维护人员对问题作出快速响应,还可以利用存储数据提供杰出的报表及实时的图

在Windows系统上实现轻量级的线程间及进程间消息队列

看IaaS 资料时,捎带研究下硬件虚拟化,主要参考<基于intel VT-x 的Xen 全虚拟化实现>,<intel 开发手册 第三卷 19/20章> Intel VT 是intel X86架构的CPU硬件虚拟化技术,新增两种模式: VM root: 即虚拟机管理系统运行模式: VM non root:即虚拟机运行模式: 如下图: VMXON.VMXOFF用以实现打开或关闭虚拟化功能: VM Exit和VM Entry 用以实现non root和root之间的切换:这种转换被VMC

在Windows系统上以C++打印出当前活动用户的环境变量

在Windows系统上以C++打印出当前活动用户的环境变量,代码如下(QT环境): [cpp] view plain copy void getEnvironmentVariables() { DWORD sessionId = WTSGetActiveConsoleSessionId(); qInfo() << "Session ID = " << sessionId; HANDLE token; if (!WTSQueryUserToken(sessionI

如何在Windows系统上利用Telnet协议连接Linux服务器

Telnet协议是Internet远程登录服务的标准协议,它为用户提供了在本地计算机上完成远程主机工作的能力.很多终端使用者都习惯在计算机上利用Telnet会话来远程控制服务器.这里小编就分两步为大家演示如何在Windows系统上利用Telnet协议连接Linux服务器. 步骤一:在Windows系统上打开Telnet功能:  步骤二:在Linux系统上启用Telnet服务. 步骤一:Windows终端开启Telnet功能 1/由于在Windows Vista之后的版本默认并没有提供Telnet

快速获取Windows系统上的国家和地区信息

Windows系统上包含了200多个国家和地区的数据,有时候编程需要这些资料.以下代码可以帮助你快速获取这些信息.将Console语句注释掉,可以更快的完成分析. 1 static void Main(string[] args) { 2 Console.WriteLine("Start!"); 3 // 这里可以修改文件路径和文件名称. 4 var sw = new StreamWriter(new FileStream("RegionInfo.txt", Fil