gny*_*his 5 git repository git-filter-branch
我相信 git filter-branch 可以让我做到这一点,但我无法弄清楚是否需要使用 --subdirectory-filter 或者是否需要使用索引过滤器。
但是,假设我有一个名为 repo 的存储库,其结构如下所示:
repo/fileA
repo/fileB
repo/dir1/fileC
Run Code Online (Sandbox Code Playgroud)
我想要做的是将所有内容移动到名为 dir2 的目录中,因此结果是:
repo/dir2/fileA
repo/dir2/fileB
repo/dir2/dir1/fileC
Run Code Online (Sandbox Code Playgroud)
我想使用 filter-branch 让它看起来就像自从这个存储库诞生以来,一切都总是在 dir2 中完成。使用子目录文件或索引过滤器来执行此操作是否更合适?
树过滤器。像下面这样的东西应该有效:
git filter-branch --tree-filter 'test -e fileA && mkdir dir2 && mkdir dir2/dir1 && mv fileA fileB dir2/ && mv dir1/fileC dir2/dir1/ || echo "no op"' HEAD
Run Code Online (Sandbox Code Playgroud)
然而,这假设 fileA、fileB 和 fileC 是同时添加的(因为我们对 fileA 使用 test -e),但情况可能并非如此。如果不是这种情况,您必须对每个文件进行多次扫描。
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |