使用 git 过滤器分支重写提交历史记录
使用 git 过滤器分支命令(过滤器分支)
该命令允许您重写 Git 提交历史记录。这可以对选定的分支执行此操作,并且可以对每个修订版本应用自定义筛选器。这将为所有已修改的提交创建不同的哈希。这意味着您可以根据任何重写的提交获得所有提交的新ID。git filter-branch
使用该命令很危险,因为它会更改 Git 存储库。它更改了提交 ID,并且对此类更改做出反应需要开发人员执行显式操作,例如,尝试将过时的本地分支重定为相应的重写远程跟踪分支。filter-branch
例如,如果要从 Git 历史记录中删除包含密码的文件,则可以使用。或者,您想要从历史记录中删除巨大的二进制文件。要完全删除此类文件,您需要在所有分支上运行该命令。git filter-branchfilter-branch
过滤器分支示例
以下命令从 Git 存储库中提取目录,并保留此子文件夹的所有提交。
git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME
以下命令替换所有提交中一个作者的电子邮件地址。
git filter-branch -f \
--env-filter 'if [ "$GIT_AUTHOR_NAME" = "Lars Vogel" ]; then \
GIT_AUTHOR_EMAIL="xq.com"; fi' HEAD)