我有一个git子模块,我想成为我的主要项目的一部分(因为我有很多项目特定的代码将进入子模块)。删除git子模块,但保留文件
所以我想删除对子模块的git引用并将这些文件添加到我的主git存储库。
但是如何?
我有一个git子模块,我想成为我的主要项目的一部分(因为我有很多项目特定的代码将进入子模块)。删除git子模块,但保留文件
所以我想删除对子模块的git引用并将这些文件添加到我的主git存储库。
但是如何?
必须在您的索引中移除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
部分。
然后您可以添加并提交该子文件夹。
的副本,但'''git submodule deinit subfolder'''删除子文件夹内容从磁盘。 '''--cached'''选项不做任何事情,因为内容已经消失了。 (git 1.9.2) – 2015-01-22 14:12:08
@ and-dev --cached从索引中删除,而不是从磁盘中删除。 – VonC 2015-01-22 14:40:20
我发现deinit命令将子文件夹放回为空目录。然后,mv将temp子文件夹放入新的空目录中,而不是重命名它。所以在做最后的mv之前检查目录。否则,做了这份工作。 – Jason 2017-05-04 16:32:47
从VonC答案将进行删除,除非首先重命名物理文件夹的子模块文件夹的内容 - 如在这个答案,他的问题被指出是重复乍得:
已接受的答案已更新以反映这些问题。 – Louth 2017-02-20 00:20:49
只是递归删除'.svn'文件夹 – Raptor 2014-11-05 08:22:24
这似乎是http://stackoverflow.com/questions/1759587/un-submodule-a-git-submodule – Chad 2015-04-15 17:27:59