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”和朋友将按预期工作。

4

1 回答 1

3

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

只要filter-branch不开始做出任何保证,这就是你所能得到的,这似乎不太可能。

于 2013-08-01T23:33:13.397 回答