[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!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM