2012-07-17 101 views
4

我對git有點新,但我從他們的網站上讀了Git書。 所以我開始在我的服務器上安裝GitLab。Git損壞提交

在第一次提交SVN的導出之前,我正在處理SVN。 我的朋友也在研究同一個項目(他的名字是盧卡斯)。

我創建了一個分支出身的/ dev得到產地/主完全穩定並發展在/ dev。 我也創建了一個分支feature258我正在研究。當我試圖拉起源的/ dev合併我很大的特點之前獲取的變化我有這樣的:

$ git pull origin dev 
fatal: object 18c29b4c26d7b0d34719d10ada6901c6024f91e6 is corrupted 
fatal: The remote end hung up unexpectedly 

看來,18c29b4對象是粉色提交(CF截圖)這隻修改了一下的.gitignore文件

我跑混帳的fsck --full但我有沒有幫助我的線索:

$ git fsck --full 
dangling blob 0c87d2eb401651ec3045eb0248d54ed546206dbe 
dangling blob 1cd17aadc009ba9d39d1137533d65107ca54da95 

blob 0c和1c只是我在feature_258上次提交中修改的一個文件。

我在Google上搜索了3個小時後發現Linus Torvalds方法和其他StackOverflow帖子,但沒有找到一個好的解決方案。

如果能救我,也許我可以在分支變基之前的錯誤提交,並重新做我的工作(我保存在另一個目錄,以確保)

Screenshot of SourceTree

+0

可能重複[如何用我的文件創建的新的替換損壞的Git對象,這很好](http://stackoverflow.com/questions/2183780/how-to-replace-corrupt-git-objects-與新的一個創建從我的文件,其中AR) – 2012-07-17 15:00:18

+0

我不知道明白。我做了:git hash-object -w'file-from-fsck'它告訴我: '95e1180c100930f579854d1fd03f2585eb7e5dc7' 那麼我應該怎麼做?謝謝你以前的回答! – THClem 2012-07-17 15:26:57

+0

損壞的對象位於'origin'上,而不在您的存儲庫中。你必須在那裏運行'git fsck --full' – fork0 2012-07-17 15:35:02

回答

1

通常這樣的:

fatal: The remote end hung up unexpectedly 

講述連接終止。也許(也許)這不是一個Git回購問題,但某種系統故障。如果我是你,我開始檢查回購中的文件權限。如果您使用gitolite,那麼它會是這樣的:

chown git:git -R $GITOLITE/repositories/my_repo.git/ 
chmod u+rw -R $GITOLITE/repositories/my_repo.git/ 

然後,如果它不是一個問題,我試圖克隆回購服務器上

git clone $GITOLITE/repositories/my_repo.git/ ~/test_clone.git 

而且還有一個建議 - 以用戶git登錄並檢查git版本。