我需要在某些提交中从我的repo中删除一个文件夹。它已在提交a
中添加,并在提交b
中删除,并在提交c
中再次作为子模块添加。
现在我想从(包括)a
和b
之间的提交中删除它。
我必须做以下事情:
git filter-branch --index-filter 'git update-index --remove lib --ignore-submodules' 7a08959f87681decc15ad5a272bbada66c3272e8 goodbye_cmake
但我不知道如何添加结尾(b
)。它会从a
到最后一次提交goodbye_cmake(即HEAD)的所有提交中删除它...那么我需要更改的是在最后几次(~30)提交中我仍然拥有子模块?< / p>
谢谢你所有的时间!
- Fodinabor
答案 0 :(得分:1)
BFG是filter-branch的一个很好的替代品,它是blessed by github。它只会更改您的历史记录,并且不会删除项目中当前存在的任何文件,因此它应该删除旧目录,直到您想要提交b
。调用最终看起来像:
java -jar bfg.jar --delete-folders directory_name your_repo.git
答案 1 :(得分:0)
除非我对这个问题有误解,否则您几乎已经有了答案:
$ git filter-branch --index-filter 'git update-index --remove tests/files/ceac_analysis_data_* --ignore-submodules' 10e8e892b49a4657a3b36ef4ca0a524b8a26a438..HEAD
所以语法是
$ git filter-branch *options* a..b
代替
$ git filter-branch *options* a b`