git filter-branch - 删除许多子模块中的一个

时间:2018-04-30 10:48:18

标签: git git-filter-branch git-bare

我一直在使用git filter-branch来摆脱遗留文件,但是对于一个简单的git repo,我无法弄清楚如何重写我的git历史,其中我的一个git子模块被移除了。

我有一个顶级回购“唐纳德”而在“唐纳德”之下我有四个子模块“Huey”,“Dewey”,“Louie”和“Phooey”[1]。 永远不应该添加“Phooey” - 不幸的是时间过去了。

我发现的最佳参考是git filter-branch remove all submodules from my repo,但有点太多了。

[1] http://www.sullivanet.com/duckburg/phooey.htm: - )

1 个答案:

答案 0 :(得分:0)

首先,备份。 Deinit并删除一个模块:

git filter-branch -f --prune-empty --tree-filter '
    git submodule deinit -f -- path/to/module &&
    git rm -rf path/to/module || :
' HEAD &&
rm -rf .git/modules/path/to/module