2016-11-30 20 views
1

預期行爲

我編輯文件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://[email protected]:/opt/git/fooBar.git 
    28ad03d..73ae492 master -> master 
$ 

問題

然後,我在同一個項目中編輯的文件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://[email protected]:/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=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/,但這也沒有什麼不同。當我過去遇到這樣的問題時,這似乎有幫助。

我在我的本地倉庫和服務器上做了一個git gc /opt/git/fooBar.git。沒有快樂。

更新

我刪除了我的本地回購,克隆,編輯文件2(這混帳不喜歡前正在編輯)由添加一個空行。承諾,推動,它的工作!然後我評論了十幾行未使用的代碼,承諾推送,並且工作!我可以介紹一個角色或者git不喜歡的東西嗎?

+2

你還等什麼,在'Total'線後,是另一端回來,並說:「是的,我已經接受了你的裁判更新」或「不,我拒絕你的更新」(每個分支一個答覆或標籤更新你發送,在這種情況下,只是一個分支)。因此問題*在另一端*,可能是由於錯誤的掛鉤。它需要從那個端點進行診斷。 – torek

回答

1

這是我的路由器?!?!?!

最大的線索是,我試圖SFTP麻煩的一個文件到服務器,但失敗。我昨天安裝了新的Netgear AC1750智能WiFi路由器型號R6400。要解決我的問題,我只需拔掉Netgear路由器並插入舊的Linksys WRT120N。一切正常。

奇怪。你會想如果我從我的桌面使用VPN並在其中運行SSH,路由器將無法分辨它發送的是什麼類型的數據包。或者,如果它打亂了所有會破壞數據包的數據包。我不明白。

我告訴美國網件我的問題,並表示,我可能會返回路由器和得到的東西,我可以上安裝開源固件。他們的迴應是「也許你應該這樣做」,所以我做了。現在在一切正常的情況下,在布法羅路由器上快樂地運行OpenWRT。

+1

作爲一項快速測試,我使用手機的熱點進行測試,併發揮了作用。不知道它是路由器還是ISP,但我確定它不是我的系統/ git。謝謝。 – rrosa

2

我有這種行爲出於不同的原因,希望這有助於回答別人:)

我家裏有我的本地git的服務器上的目錄,在我所有的git回購/ SRV/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://[email protected]<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 

我有一個回購協議的情況下,如果沒有得到整條生產線的這種刺激性行爲而沒有進一步的迴應,我就無法推動任何事情。我錯過了服務器上的第三條命令(su - git-user),所以我以root身份創建了我的裸回購,導致所有文件都由root擁有。當然,解決方案只是刪除服務器上的裸回購,並將其重新創建爲git-user。

這與GlenPeterson所說的關於服務器問題而不是客戶端問題是一致的。

+1

謝謝!一個注意:在服務器上,你應該能夠通過運行 'cd/srv/git; chown -R git-user.git-user newgitrepo.git' 將這些文件的組和用戶所有權更改爲git-user組和git-user用戶。如果這樣做(我相信它應該),我認爲這比刪除和重新創建回購更好。 – GlenPeterson

+0

添加和刪除不是一個特權問題 - 這是一個git流問題。Git要求(以我的理解)在您可以檢查之前在服務器上創建回購 - 這是GitHub爲您單擊以創建新回購時所做的事情。 此外,Eclipse egit不會簽出一個空的回購 - 您必須先推送服務器上的東西。我有一個腳本,我可以通過ssh執行,創建一個repo,檢出它,提交一個包含一行bin的.gitignore,並刪除它。 然後在客戶端,我可以檢查出來,我沒有問題。 – Greg