Git-Filter-Repo:修改 Git 仓库历史记录的强大工具

Git-Filter-Repo 是一款快速且灵活的工具,用于修改 Git 仓库的历史记录。它可以用于许多任务,例如:

  • 重写提交历史记录
  • 清理旧的大型文件
  • 将仓库拆分成几个小仓库
  • 将多个仓库合并成一个
  • 移除密码和其他敏感数据

Git-Filter-Repo 的一些特性是:

  • 处理速度快
  • 灵活,可配置性高
  • 保留提交的作者和时间戳信息
  • 可以对文件进行重命名和重构
  • 可以对提交信息进行修改和删除
  • 可以对提交信息进行搜索和替换
  • 可以使用 Python 脚本进行自定义修改

安装

您可以使用 pip 来安装 Git-Filter-Repo:

$ pip3 install --user git-filter-repo

如果您没有 pip,您可以使用以下命令来安装它:

$ sudo apt-get install python3-pip

或者

$ sudo yum install python3-pip

使用

Git-Filter-Repo 有许多功能。以下是一些常见的用例。

重写提交历史记录

在某些情况下,您可能需要重写提交历史记录。这可能是因为提交历史记录包含了不必要的敏感信息,或者因为提交历史记录有错误。

以下命令将从 git 仓库的第一个提交开始,并删除提交消息中包含 'password' 的所有提交消息:

$ git filter-repo --message-callback 'return re.sub(b"password", b"***REDACTED***", message)' --force

清理旧的大型文件

如果您的 git 仓库包含大型文件,那么您可能想要清理这些文件。以下命令将从 git 仓库中删除大于 10MB 的文件:

$ git filter-repo --strip-blobs-bigger-than 10M --force

将仓库拆分成几个小仓库

如果您的 git 仓库变得太大,您可能希望将其拆分成几个小仓库。以下命令将从 git 仓库中提取某个目录,并将其转换为一个新的 git 仓库:

$ git filter-repo --path my/dir --target my-new-repo.git --force

将多个仓库合并成一个

如果您有多个 git 仓库,而您希望将它们合并到一个新的 git 仓库中,那么您可以使用以下命令:

$ git filter-repo --source my-repo.git --source another-repo.git --target my-new-repo.git --force

移除密码和其他敏感数据

如果您的 git 仓库包含密码和其他敏感数据,那么您可能希望将这些数据从提交历史记录中删除。以下命令将从 git 仓库中删除提交消息中包含 'password' 的所有提交消息:

$ git filter-repo --message-callback 'return re.sub(b"password", b"***REDACTED***", message)' --force

更多信息

有关 Git-Filter-Repo 的更多信息,请查看以下资源:

  • Git-Filter-Repo 的 GitHub 页面:https://github.com/newren/git-filter-repo
  • Git-Filter-Repo 的文档:https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html
  • Git-Filter-Repo 的示例:https://github.com/newren/git-filter-repo/blob/docs/examples/README.md
Git-Filter-Repo:修改 Git 仓库历史记录的强大工具

原文地址: https://www.cveoy.top/t/topic/lPmU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录