Git 将子目录拆分为新的repo,但将其保留为子文件夹
我一直在寻找一个git过滤器分支和子树来分离一个子文件夹,我想从一个repo到另一个repo。但是,我希望在新回购协议中保留子文件夹,而不是子文件夹的内容是根目录 以便:Git 将子目录拆分为新的repo,但将其保留为子文件夹,git,Git,我一直在寻找一个git过滤器分支和子树来分离一个子文件夹,我想从一个repo到另一个repo。但是,我希望在新回购协议中保留子文件夹,而不是子文件夹的内容是根目录 以便: repo/ |-- sub1/ |-- sub2/ |-- sub3/ 变成: repo2/ |-- sub2/ 有人能帮忙吗?您可以尝试以下方法: git filter-branch --subdirectory-filter ./sub2 git push repo2 HEAD 如果要保留sub2并删除所有其他内容,
repo/
|-- sub1/
|-- sub2/
|-- sub3/
变成:
repo2/
|-- sub2/
有人能帮忙吗?您可以尝试以下方法:
git filter-branch --subdirectory-filter ./sub2
git push repo2 HEAD
如果要保留sub2并删除所有其他内容,则应执行以下操作:
git filter-branch --tree-filter 'for i in * .*; do test "$i" = . -o "$i" = .. -o "$i" = sub2 && continue; rm -fr "$i"; done' --prune-empty
就是,
--tree filter
中的命令将遍历目录内容,并删除除
、。
和sub2
之外的所有内容,以及通过执行此操作而变为空的所有提交
同一事物的另一个变体稍微简单一些,但不会处理嵌入换行符的路径:
git filter-branch --tree-filter 'git ls-files | grep -v ^sub2/ | xargs rm -fr' -f --prune-empty
有没有理由不简单地克隆repo,然后删除其他子目录?你试过我回答中的建议了吗?