2014-06-11 187 views
1

我在這裏有一個非常奇怪的,不好的情況。免責聲明,我是git新手,而且我有點搞砸了。git submodule衝突推

所以我有很多submodules在我的fork中,基於monodevelop。

第一個:我甚至無法使用 git submodule update --init --recursive更新我的子模塊。
我嘗試了一堆類似的命令,與rebase,foreach等,所以我終於得到最新使用git submodule foreach git pull origin master。之後,我得到了我的所有文件。我然後承諾並推動我的變化

現在:我只注意到,我所有的子模塊都有衝突。 < < < < < < < < HEAD等我不知道這些來自哪裏,我不知道如何解決這些問題。

git狀態表示一切都是最新的。子模塊更新說,即使有力,一切都是最新的。 git fetch表示一切都是最新的。

回答

1

對於任何弄虛他們的子模塊的人。我也得到了我的朋友的幫助。

我所做的是合併子模塊並將它們提交到我的主模塊中。一般的經驗法則是我不應該這樣做,而是使用更改單獨向子模塊回購請求。

無論如何,我剛進入每個子模塊目錄git log # hit q to cancel out of the entire output.。當我爲了正確的提交而提交commit sha時,我想返回。
然後我做了git reset --hard c5652 # Partial commit id, if no other branch or file have that name.這是解決我的問題。

我在整個工作過程中並不清澈,而且我一定會閱讀更多內容。

+0

將子模塊內容放入主模塊確實不太好:它會刪除我在我的答案中提到的gitlink條目,並將其替換爲常規文件夾。 '重置 - 硬'是一個很好的舉措。 +1 – VonC

+0

@VonC是的,那是我搞砸了。我不知道它會搞亂連接。這是出於無知,我應該更加註意承諾什麼。我很高興現在解決了。 :) – harsimranb

1

git submodule update --init --recursive會將您的子模塊更新爲特定的SHA1,並記錄在主回購的索引中(作爲gitlink entry)。

如果您需要一個子模塊來跟蹤分支,您可以轉換該子模塊聲明以使其跟隨(在初始化步驟之後)該分支a git submodule update --recursive --remote
請參閱「Git submodules: Specify a branch/tag