2014-09-29 91 views
5

我試圖根據these instructions更改子模塊上的遠程。git子模塊同步不起作用

修改和保存.gitmodules後,然後做git submodule sync我的子模塊並沒有改變,雖然我的.git/config文件已經更新到新的遠程URL中.gitmodules匹配。

我也試過git submodule sync --recursive,按照this tiprm -rf .git/modules/<mySubmodule>沒有任何區別。實際上,運行後者命令,然後git submodule sync再次給出fatal: Not a git repository: ../.git/modules/<mySubmodule>。有小費嗎?

我最初通過git submodule add git://<mySubmodule-url>按照git docs將子模塊添加到項目中。

編輯

我甚至通過自制軟件更新混帳到V2.1.1,仍然一無所獲。我也嘗試從頭開始,甚至在兩個完全不同的子模塊之間切換,但我仍然得到相同的結果。總之:

$> mkdir myRepo 
$> cd myRepo 
myRepo$> git init . 
myRepo$> git submodule add https://<path/to/my/repo>.git 
myRepo$> vim .gitmodules 
# change submodule url to https://<path/to/another/repo>.git 
myRepo$> git submodule synC# updates my .git/config file with the new submodule url, but all my files in the submodule are still from the old url 
myRepo$> git submodule sync --recursive # doesn't do anything 
myRepo$> git submodule update --init --recursive # doesn't do anything either 
myRepo$> rm -rf .git/modules/<mySubmodule> # tip from SO comment linked above 
myRepo$> git submodule sync 
fatal: Not a git repository: ../.git/modules/<mySubmodule> 
+0

只是一個'混帳子模塊更新--init --recursive'是行不通的(在'git的子模塊同步--recursive'之後)? – VonC 2014-09-29 20:22:03

+0

不 - 我仍然看到原始子模塊。 – acannon828 2014-09-29 20:23:41

+0

查看http://stackoverflow.com/questions/3336995/git-will-not-init-sync-update-new-submodules – 2017-01-23 18:02:30

回答

8

這似乎很煩人。不理想,但以下似乎爲我工作

git submodule foreach git pull --rebase 
+0

是的,這工作!絕對不是理想的,但我會接受。在我接受之前,你能解釋一下你的答案嗎?另外,你是否能夠複製我的問題? – acannon828 2014-09-30 18:55:46

+1

我確實在Git 2.1.1中看到了相同的行爲。我老實說不知道它是'預期'還是錯誤。子模塊一直有點狡猾。至於它爲什麼會起作用 - 它會導致git進入子模塊並執行提取(在我的情況下,再次將其轉換爲強制分支 - 再次,不知道爲什麼)。 – 2014-09-30 20:15:40

+0

我試過這個命令,它什麼都沒做。 – 2015-07-28 19:26:34