我正在尝试使用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完全不相关。
[little known revision notation可以实现此目的:
git filter-branch -f --env-filter "......" E^! HEAD
E^!
包括E
,但不包括其所有父项。同样通过指定HEAD
,您可以获得HEAD
(和E
)可以访问的所有内容,但不包括E
的父代可以访问的所有内容。