当项目包含其他子模块时,git filter-branch不起作用

时间:2018-08-01 11:03:49

标签: git git-filter-branch

假设我具有以下项目结构:

.git

--APP
-----F

--LIBS
------A
-------.git
------B
-------.git
------C
-------.git
------D
-------.git

F是APP文件夹下的子文件夹。 A, B, CD是位于LIBS文件夹下的四个子模块。

我想做的是将F文件夹提取到另一个存储库中(当前它只是一个简单的子文件夹)。

到目前为止,我已经执行了以下操作:

for remote in `git branch -r | grep -v /HEAD`; do git checkout --track $remote; done

之后,我跑了:

git filter-branch --prune-empty --tag-name-filter cat --subdirectory-filter APP/F/ -- --all

结果是:

.git

--F

--LIBS
------A
-------.git
------B
-------.git
------C
-------.git
------D
-------.git

好像层次结构中的子模块仍在重写历史记录。

但是,我想要的结果是仅保留在F目录中,而没有其他子模块。.

--F
---.git

1 个答案:

答案 0 :(得分:0)

repo/不是使用子模块的正确工具。您想要的是删除各自的子模块(使用rm),然后使用filter-branch依次然后移动:

filter-branch
相关问题