这两个命令有什么区别吗?
git subtree split --prefix=some_subdir -b some_branch
和
git filter-branch --subdirectory-filter some_subdir some_branch
我想使用git filter-branch
代替git subtree
,因为我还想删除新分支中的一些文件,但我担心这种保证,git subtree
也是如此,可能对git filter-branch
无效:
保证完全相同历史的重复分割 相同(即产生相同的提交ID)。因此,如果 你添加新的提交然后重新拆分,新的提交将是 在上次生成的历史记录中作为提交附加,所以 'git merge'和朋友们将按预期工作。
答案 0 :(得分:3)
filter-branch
绝对没有给出任何这样的保证,所以在使用它时你肯定是在希望方面。但子目录过滤器具有完全可重现的结果,filter-branch
不会触及提交信息(提交和作者时间戳和人)。由于这是创建提交sha的信息,filter-branch
应该再次生成相同的历史记录。
只要filter-branch
没有开始做出任何保证,那就是你所能获得的,而这似乎不太可能。