2012-12-19 162 views
1

所以我參加這個項目,使用git。錯誤克隆git re

有一堆源文件和我們提到的一些庫。這些庫作爲子模塊(例如BulletPhysics)被放入git中,並且不會被我們的團隊修改。

根據墨菲定律,這種改變已經發生,連同提交/推,這似乎並未有任何影響......

...直到一些人失去了他的本地回購,不得不重新-克隆。那麼,發生的是該項目的某些部分被實際下載,但是當涉及到子彈,所發生的一切是

Unable to checkout 'cc1b481c8ec2868595db30303d88bd12bc1bcf2a' in submodule path 'extern/bullet' 

我們的主管告訴我們它已經被提交/推行動打破(S)試圖改變子彈,我們沒有權利這樣做,並且他不知道如何解決這個問題。

有沒有人可以幫我解決這個問題而不判斷他? 。;)

問候,lder連續

+0

您應該檢查克隆庫的子模塊。子模塊存儲庫是否存在於'.gitmodules'中的指定位置?並且這些存儲庫中是否存在引用的提交,即'extern/bullet'的存儲庫中的'cc1b481c8ec2868595db30303d88bd12bc1bcf2a'? – Koraktor

+0

我應該如何檢查?在我的本地工作副本中,或通過ssh進入git服務器? – LDericher

+0

'.gitmodules'文件應該出現在你的本地克隆(和遠程文件)中。 – Koraktor

回答

0

我找到了解決辦法:

(網絡上的一些資源,加之隨意添加自己的評論)

第一,去子模塊文件夾在終端。在我的例子中,/path/to/.../project/extern/bullet。在那裏執行以下命令

cd /path/to/.../project/extern/bullet 

使用'git log',找到最後一次有效提交的sha-id。在我的情況下,「cc1b481c8ec2868595db30303d88bd12bc1bcf2a」之前。正如你可能猜到的那樣,它是「c2720237e96e126dddb37f0496242d3adbf31ab0」。這是什麼應該解決它:

git reset --hard c2720237e96e126dddb37f0496242d3adbf31ab0 
git submodule init 
git submodule update 
cd /path/to/.../project 
git add extern/bullet 
git commit 
git push 

直到現在,回購作品按預期工作。

最好的問候, LDericher

+0

「有效」提交意味着什麼? 'cc1b481c8ec2868595db30303d88bd12bc1bcf2a'存在嗎?如果是這樣,你應該檢查你的倉庫(也可能是文件系統)是否有損壞(參見['git-fsck'](http://git-scm.com/docs/git-fsck))。 – Koraktor

+0

最後一個「有效」提交是cc1b481c8ec2868595db30303d88bd12bc1bcf2a之前的最後一個,它只存在於extern/bullet下的git log中。這個cc1b ...-提交確實會導致有問題的錯誤。但是,'git fsck'確實發現了一些錯誤。 「晃來晃去的斑點/提交/樹木」和他們的校對。他們中沒有一個是臭名昭着的校驗和,而「晃來晃去」通常有點令人不安。 – LDericher