假设我有一个仓库,其文件夹结构类似于这样:
我希望我可以简单地使用
附加说明:
如评论所建议的那样,我已经尝试过:
但是这样做非常缓慢,所以我对它感到不耐烦。`git help filter-branch`似乎建议我可以使用`--index-filter`而不是`--tree-filter`来加快速度,所以我希望能够简单地改用以下方法:
然而,尽管似乎通过我的提交进行了一些操作,但最终以以下信息结束:
|-dir1
|-dir2
| |-subdir1
| |-subdir2
| |-subdir3
|-dir3
我希望我可以简单地使用
git filter-branch --subdirectory-filter
来解决这个问题,但是我似乎遇到了两个挑战:
- 似乎我不能提供多个
--subdirectory-filter
参数?至少它似乎没有包括我想要的所有子目录。 - git似乎会剥离掉父目录。
|-dir1
|-dir2
| |-subdir1
| |-subdir3
附加说明:
如评论所建议的那样,我已经尝试过:
git filter-branch --tree-filter 'rm -rf dir2/subdir2' --prune-empty
但是这样做非常缓慢,所以我对它感到不耐烦。`git help filter-branch`似乎建议我可以使用`--index-filter`而不是`--tree-filter`来加快速度,所以我希望能够简单地改用以下方法:
git filter-branch --index-filter 'rm -rf dir2/subdir2' --prune-empty
然而,尽管似乎通过我的提交进行了一些操作,但最终以以下信息结束:
目录 'dir2/subdir' 及其内容仍然留在我的工作副本中。因此,我显然误解了某些东西。我很想知道使用警告:参考 'refs/heads/master' 未更改
--index-filter
的正确方法是什么?
git filter-branch --tree-filter 'rm -rf dir2/subdir2 dir3/'
命令。如果需要的话,可以加上-f
参数。 - ElpieKay--index-filter
编辑到问题中。在这里我要注意的是,树过滤器中的命令很简单(但速度较慢);相应的命令放入索引过滤器中往往更难编写。 - torek