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

问题描述 投票:0回答:1

我正在尝试使用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完全不相关。

git git-filter-branch
1个回答
0
投票

[little known revision notation可以实现此目的:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.