2017-06-15 55 views
2

我該怎麼做git submodule absorbgitdirs的相反?即將子模塊的.git信息從superproject/.git/modules/<module>中移出並返回到superproject/path/to/<module>/.git目錄?git submodule absorbgitdirs的反面/反面?

我還是想<module>是的superproject一個子模塊,我只是不想小號.git/modules目錄<module>「在superproject小號.git目錄信息」。

+0

可能重複或與以下相關:https://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule – awiebe

回答

2

請注意,這將使超級項目/路徑/ //嵌套的Git倉庫,其SHA1仍將由父項目記錄。

要保持完全相同的狀態,您可以複製superproject/.git/modules/<module>並重命名爲superproject/path/to/<module>,並將<module>/<module>重命名爲<module>/.git

然後你可以使用git submodule deinit刪除子模塊:

mv asubmodule asubmodule_tmp 
git submodule deinit -f -- a/submodule  
rm -rf .git/modules/a/submodule 

# if you want to leave it in your working tree 
git rm --cached asubmodule 
mv asubmodule_tmp asubmodule 

我仍然希望的superprojec

一個子模塊,那麼它的.git文件夾將是superproject/.git/modules/<module>

submodule absorbgitdirs不會留下任何的選擇:

如果一個子模塊的git的目錄是子模塊內部,移動子模塊的git的目錄到其superprojects $GIT_DIR/modules路徑,然後通過連接的git目錄及其工作目錄設置core.worktree並添加一個.git文件指向嵌入到superprojects git目錄中的git目錄。

我沒有在git config中看到任何可能移動的配置$GIT_DI R/modules

absorbgitdirscommit f6f8586對Git的2.12(Q4 2016)
Its tests shows,預計使用GIT_DIR/modules介紹。

較舊的Git(before Git 1.7.8,2011年10月)在子模塊文件夾中直接有.git

+0

我可以發誓在某個時候你可以有一個子模塊,* *不*讓它生活在'superproject/.git/modules/'中的'.git'信息。 – genpfault

+1

@genpfault是:舊版本的Git直接在子模塊文件夾中有.git。 – VonC

+0

試驗了一下,看起來像克隆了sumodule的repo,然後'git submodule add ./path/to/ '就地離開了submodule的'.git'目錄。但是直接的'git submodule add '會把'.git'信息放在'superproject/.git/modules'中。所以文件移動舞蹈你建議應該工作,給最後的'git submodule add ./path/to/ '重新子模塊。謝謝! – genpfault