关于如何使用 git-filter-repo 隐藏提交记录中的敏感信息
首先,在这里吹一下 new bing ,这玩意实在是太好用了,再也不用使用什么关键词搜谷歌然后翻半天了。只需要使用中文输入一个疑问句,他就可以输出流畅的中文答案,还标注来源。
闲话不多说,下面记录一下 new bing 给出的标准答案:
- 确保你已经安装了 Python 并且将它添加到系统的路径中。
- 确保你已经安装了 Git 并且将它也添加到系统的路径中。
- 下载 git-filter-repo 文件1,并保持它的文件名(git-filter-repo,没有扩展名)。
- 如果需要,将文件第一行的 ‘python3’ 替换为 ‘python’(通常在 windows 10/11 上需要)。2
- 输入
git --exec-path
命令,找到 Git 的路径。 - 将 git-filter-repo 文件移动到那个位置。(Git 的路径)。
- 在你的仓库创建一个 expressions.txt 文件,内容如下:literal:foo==>bar
-
然后运行:
git filter-repo --replace-text expressions.txt
- 这会修改所有提交,并把其中的 “foo” 替换成 “bar”。
另外,使用指令时,需要确保仓库中没有除了 expressions.txt 以外的未提交内容。如果有,你也可以在 --replace-text 添加一个 --force,这会强制丢掉所有未提交内容并进行替换操作。
然后下面是如何将修改后的仓库推送到远程仓库(以 GitHub 为例):
- 删除你的远程仓库,并创建一个新的远程仓库。
- 将你修改后的本地仓库推送到新的远程仓库。
- 通知其他人使用新的远程仓库,并删除旧的远程仓库。