正在搜索扔SO以获得答案。碰到这个老线程似乎没有给出任何答案。重新触发这个线程,希望有人知道!
有人可以告诉我b / w git子树和git filter-branch的区别吗? 我将在原始问题中使用相同的示例:
git subtree split --prefix=some_subdir -b some_branch
git filter-branch --subdirectory-filter some_subdir some_branch
答案 0 :(得分:5)
是的,git subtree
(一个贡献shell)可用于拆分回购,如Using Git subtrees for repository separation中“Stu Campbell”中所述。
您需要删除已在拆分文件夹中复制的代码:
git subtree split --prefix=path/to/code -b split
git push ~/shared/ split:master
git rm -r path/to/code
git commit -am "Remove split code."
这与git filter-branch
(本机Git命令)不同,它重写了repo历史记录,只记录了那些实际影响特定子目录内容的提交。
含义:git rm
运行后,filter-branch
没有代码
git filter-branch
不会像git subtree split
那样重复提交:它会删除(“过滤掉”)与某个条件不匹配的所有内容(此处为子文件夹路径)