2014-11-05 69 views
9

我有一個git子模塊,我想成爲我的主要項目的一部分(因爲我有很多項目特定的代碼將進入子模塊)。刪除git子模塊,但保留文件

所以我想刪除對子模塊的git引用並將這些文件添加到我的主git存儲庫。

但是如何?

+0

只是遞歸刪除'.svn'文件夾 – Raptor 2014-11-05 08:22:24

+0

這似乎是http://stackoverflow.com/questions/1759587/un-submodule-a-git-submodule – Chad 2015-04-15 17:27:59

回答

12

必須在您的索引中移除gitlink entry

mv subfolder subfolder_tmp 
git submodule deinit subfolder 
git rm --cached subfolder 
mv subfolder_tmp subfolder 
git add subfolder 

更換subfolder與您的輔助模塊中的文件夾的名稱,並確保不添加任何尾隨的斜槓。

這就是我在「Remove a Git submodule?」和「un-submodule a git submodule」中詳細介紹的內容。

--cached選項允許您保留磁盤中的子文件夾內容...除了git submodule deinit無論如何都已經刪除了該內容。因此mv部分。

然後您可以添加並提交該子文件夾。

+2

的副本,但'''git submodule deinit subfolder'''刪除子文件夾內容從磁盤。 '''--cached'''選項不做任何事情,因爲內容已經消失了。 (git 1.9.2) – 2015-01-22 14:12:08

+0

@ and-dev --cached從索引中刪除,而不是從磁盤中刪除。 – VonC 2015-01-22 14:40:20

+1

我發現deinit命令將子文件夾放回爲空目錄。然後,mv將temp子文件夾放入新的空目錄中,而不是重命名它。所以在做最後的mv之前檢查目錄。否則,做了這份工作。 – Jason 2017-05-04 16:32:47

0

從VonC答案將進行刪除,除非首先重命名物理文件夾的子模塊文件夾的內容 - 如在這個答案,他的問題被指出是重複乍得:

https://stackoverflow.com/a/16162228

+0

已接受的答案已更新以反映這些問題。 – Louth 2017-02-20 00:20:49