JRo*_*han 13 git git-filter-branch
我正在使用filter-branch的--subdirectory-filter选项拆分Git存储库,除了它将所有东西都拉到存储库的根目录之外,它工作得很好.
我现在有
ABC
- DEF
- GHI
- JKL
- MNO
Run Code Online (Sandbox Code Playgroud)
以及此命令的结果:
git filter-branch -f --subdirectory-filter ABC/DEF --prune-empty -- --all
Run Code Online (Sandbox Code Playgroud)
生成这个:
GHI
JKL
Run Code Online (Sandbox Code Playgroud)
我真正想要的是这个:
ABC
- DEF
- GHI
- JKL
Run Code Online (Sandbox Code Playgroud)
我在Git文档中看不到任何显示过保留(或设置)目录结构的过滤器选项的内容,我无法找到一个命令,我可以在过滤后重新运行结构到我想要的状态.
这可能吗?
我在这里找到了一个答案,它可以解决问题。
命令:
git filter-branch -f --index-filter 'git ls-files -s \
| sed "s-\t-&ABC/DEF/-" \
| GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info \
&& mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE'
Run Code Online (Sandbox Code Playgroud)
完美运作