Warm tip: This article is reproduced from serverfault.com, please click

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

(git - Hide password in all previous commits on Github repo)

发布于 2018-02-17 15:46:28

我已经在GitHub公共仓库上上传了我的项目。但是其中一个文件包含我的密码信息。我已经做出了几项承诺。我怎样才能在初次提交时隐藏我的密码?

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

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

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

提前致谢。

Questioner
Akshay Chandrachood
Viewed
0
21.9k 2020-11-19 16:49:29

GitHub上有一篇关于此的文章。检查它在这里总结一下文章:你可以使用git filter-branch命令或BFG Repo-Cleaner。BFG Repo-Cleaner使用起来更容易,更快捷,因此我使用了它。要使用BFG Repo-Cleaner,请执行以下步骤:

  1. 在项目仓库中下载jar文件或使用macOSbrew install bfg
  2. 使用以下--mirror标志克隆你的仓库的新副本

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. 在回到存储库之前,请进入git repo文件夹并运行以下命令,以检查存储库历史记录是否已更改:

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

然后

git gc

剥离不需要的数据,这些数据你不希望将其推回存储库。

  1. 开心的时候,通过运行将其推送回远程回购git push-请注意,由于--mirror在克隆回购时使用了该标志,因此当你回退到回购时,也会回退引用更改。

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