我试图从我的历史记录中删除包含秘密 API 令牌和一些端点的文件中的几行,这些端点作为环境变量传递比在那里硬编码要好得多,所以如果我有一天将回购公开,他们将不会在那里轻率的眼睛。
为此,我使用了 BFG 存储库清理器这个很棒的工具,我过去也使用它从我的 git 历史记录中删除整个残留和敏感文件。这次按照说明替换文本:
$ java -jar ~/bfg.jar --replace-text tokens.txt myRepo.git
但在输出中,出现了:
...
* commit 10134503 (protected by 'HEAD') - contains 1 dirty file :
- app.py (640 B)
...
If you *really* want this content gone, make a manual commit that removes it,
and then run the BFG on a fresh copy of your repo.
所以我就这么做了,克隆了整个东西,提交了替换我想要os.environ[]
在 python 上调用 2 次的两行并推送它。然后我再次运行 BFG,git reflog
一切似乎都像一个魅力。
我检查了 gitlab 的提交浏览器,文本***REMOVED***
到处都是,但在倒数第二个提交中,发生了这种情况:
我猜它的发生是因为文件在下一次提交中被编辑(现在是受“HEAD”保护的那个),GIT 需要这些令牌来重新创建我所做的更改以摆脱这 2 行。但是,我该如何实现呢?