跳到正文
堆栈茶社
返回

git filter-repo 简介

更新于:
—次阅读
编辑此页

简介

git filter-repo 是一个快速而灵活的工具,用于修改 Git 仓库的历史记录。

它可以用于许多任务,例如:

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

安装

MacOS 使用 homebrew 包管理工具进行安装,命令如下,其他方式参考官方文档

brew install git-filter-repo

使用示例

移除文件

假设我们有一个包含敏感文件的 Git 仓库,需要将这些文件从提交记录中移除。

git filter-repo --path sensitive.txt --invert-paths

这个命令会将所有包含 sensitive.txt 文件的提交从历史记录中移除。

修改提交信息

修改指定 commit 的 message 信息

git-filter-repo --message-callback 'return message.replace(b"old commit message", b"new commit message")'

其中,new commit message 是你想要修改的新 commit message,old commit message 是你想要修改的旧 commit message。

替换指定的字符串

例如我们的项目中,存在密码等敏感信息,我们希望将敏感信息删除。

首先我们需要创建文件,按照如下格式将替换文本的相关内容填写其中,如文件名为 expressions

password123==>******

以上内容表示,将 password123替换为 ******,执行下面的命令进行替换

git filter-repo --replace-text ../expressions

修改 commit 信息中的 user 与 mail

新建 mailmap 文件,如文件名为 my-mailmap,文件内容格式如下:

liuqitoday <[email protected]m> liuqitech <[email protected]m>

执行下面的命令便会帮我们批量将commit 历史中的作者信息 liuqitech <[email protected]> 替换为 liuqitech <[email protected]>

git filter-repo --mailmap ../my-mailmap

重命名文件

如将 README.md 重命名为 README_1.md

git filter-repo --path-rename README.md:README_1.md

提取子目录

有时候,我们只需要一个 Git 仓库中的某个子目录。

git filter-repo --path path/to/subdir

这个命令将会把 path/to/subdir 目录提取出来,形成一个新的 Git 仓库。

提取子目录下的所有文件

如将 path/to/subdir 目录下的所有文件调整到根目录下

git filter-repo --subdirectory-filter path/to/subdir

编辑此页
分享这篇文章:

上一篇
iPhone 照片同步至 Pixel
下一篇
终极指南:OpenWrt 24.x 单线复用实现宽带拨号与 IPTV 双网融合