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