如何重写git历史记录直到包含合并提交

时间:2019-12-26 13:38:56

标签: git git-filter-branch

我正在尝试使用filter-branch重写git repo历史记录的一部分。

历史记录如下:

branch 1  A---B---E---F---G(HEAD)
                 /
branch 2  C---D-/

我正在尝试重写包括的E到技巧G的所有提交。

到目前为止,我来到了以下命令:

git filter-branch -f --env-filter "......" E..HEAD

不幸的是(根据文档),这不会重写提交E

使用范围B..HEAD也不起作用,因为它会重写分支2中的所有提交。

我应该如何重写包括E在内的所有提交?如果这很重要,则分支1和2完全不相关。

1 个答案:

答案 0 :(得分:2)

有一个little known revision notation可以实现:

git filter-branch -f --env-filter "......" E^! HEAD

E^!包括E,但不包括其所有父项。同样,通过指定HEAD,您可以获得HEAD(和E)可以访问的所有内容,但排除了E的父母可以访问的所有内容。

相关问题