2013-03-05 95 views
1

我有一個項目,我添加了一個git子模塊到一個過期的回購叉。而不是指向那個分支,我決定改變子模塊的引用來指向原始的倉庫。Git子模塊的麻煩 - 改變底層回購地址

我編輯.gitmodules文件以反映新的參考文件,然後運行git submodule initgit submodule update --recursive但是沒有任何效果,我是否在這裏丟失了一個步驟?

+1

您可能需要手動更改URL中'你的子模塊的.git/config'。 – neevek 2013-03-05 04:45:06

+0

很棒的發現!請在下面看到我對@ VonC的答案的評論。 – 2013-03-05 16:34:12

回答

1

neevekmentions.git/config,和git config文件證實:

submodule..path submodule..url submodule..update

這個項目,URL中的路徑,並更新子模塊的策略。
這些變量最初由git submodule init填充; 編輯它們以覆蓋.gitmodules文件中的URL和其他值。

所以:

  • 改變僅在.gitmodules值是不夠的(在.git/config的URL將優先)。
  • git submodule init,正如文檔中提到的,不會改變.git/config中的現有信息(並解釋了爲什麼您的命令沒有任何可見的效果)。
    然後,您可以在本地設置中自定義.git/config中的子模塊克隆URL並繼續到git submodule update

我個人認爲,這一網址複製有點混亂......

+0

我嘗試了這種方法,並且在將'config' URL更新爲原始倉庫後,我仍然無法讓'git submodule update'工作。雖然真的很好找。 – 2013-03-05 16:20:32

+0

更糟糕的是,我遵循以下步驟:http://stackoverflow.com/questions/14404704/how-do-i-replace-a-git-submodule-with-another-repo和'git submodule sync' doesn也不行。 Git今天就像一個完整的git(抱歉不能自己幫忙) – 2013-03-05 16:33:09