git subtree和git filter-branch有什么区别?

10

这两个命令有什么区别吗?

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'等命令将按预期工作。


我正在删除我的回答。我会在有更多信息时再重新发布。 - onionjake
我希望我们有一个答案。 - Ali
1个回答

3
filter-branch绝对不会提供任何这样的保证,因此在使用它时,您肯定是抱有希望的。但是,子目录过滤器具有完全可重复的结果,并且filter-branch不会更改提交信息(提交和作者时间戳以及人员)。由于这是从提交sha创建的信息,filter-branch应该再次生成相同的历史记录。

只要filter-branch不开始提供任何保证,这就是您将获得的全部内容,而这似乎是不太可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接