在 Github 存储库上的所有先前提交中隐藏密码

Aks*_*ood 1 git github repository password-protection sensitive-data

我已将我的项目上传到 GitHub 公共存储库。但是其中一个文件包含我的密码信息。我已经做了几次提交。如何从初始提交中隐藏我的密码?

没有单独的密码文件。所以在这种情况下我不能使用 .gitignore 。密码被硬编码在处理应用程序主要逻辑的 app.py 文件中。所以,我不能使用 BFG Repo-Cleaner。是否可以通过覆盖先前的提交来删除文件并添加新文件?

我已经在文件中进行了更改并推送了一个 repo。但是,以前的提交仍然显示了我的密码信息。另外,我对创建一个新的 repo 和删除旧的 repo 不感兴趣(除非我别无选择)。

如果我得到一些帮助,我会很高兴。

提前致谢。

Pri*_*ani 6

GitHub 有一篇文章专门介绍了这一点。检查它在这里。总结文章:您可以使用git filter-branch命令或BFG Repo-Cleaner。BFG Repo-Cleaner 使用起来更简单快捷,所以我使用它。要使用 BFG Repo-Cleaner,请按照以下步骤操作:

  1. 在项目 repo下载jar 文件或与 macos 一起使用brew install bfg
  2. 使用以下--mirror标志克隆您的 repo 的新副本:

git clone --mirror git://example.com/some-big-repo.git

如果使用 SSH 或

git clone --mirror https://example.com/some-big-repo.git

如果使用 HTTPS。

这是一个裸存储库,因此您将无法看到您的文件,但它将是包含所有提交的存储库的完整副本。

  1. 然后,您可以使用以下命令从以前的提交中删除特定文件:

java -jar bfg.jar --delete-files [FILE NAME] --no-blob-protection my-repo.git

或者如果安装到 PATH

bfg --delete-files [FILE NAME] --no-blob-protection my-repo.git

或从旧提交中删除密码

bfg --replace-text passwords.txt

  1. 在推送回您的 repo 之前,请通过进入您的 git repo 文件夹并运行以下命令来检查 repo 历史记录是否已更改:

git reflog expire --expire=now --all && git gc --prune=now --aggressive

进而

git gc

去除您不想推回您的存储库的不需要的数据。

  1. 一旦您满意,通过运行推回您的远程存储库git push- 请注意,因为您--mirror在克隆存储库时使用了该标志,所以当您推回您的存储库时,您还将推回引用更改。

要阅读有关 BFG Repo-Cleaner 的更多信息,请访问此链接