我已将我的项目上传到GitHub公共回购。但其中一个文件包含我的密码信息。我已经做过几次提交。如何从初始提交中隐藏我的密码?
没有单独的密码文件。所以在这种情况下我不能使用.gitignore。密码在app.py文件中进行硬编码,该文件处理应用程序的主要逻辑。所以,我不能使用BFG Repo-Cleaner。是否可以通过覆盖先前的提交来删除文件并添加新文件?
我已在文件中进行了更改并推送了回购。但是,之前的提交仍显示我的密码信息。另外,我对创建一个新的仓库并删除旧仓库并不感兴趣(除非我别无选择)。
如果我得到一些帮助,我会很高兴。
提前致谢。
答案 0 :(得分:1)
GitHub正好有一篇文章。看看here。总结一下这篇文章:您可以使用--mirror
命令或BFG Repo-Cleaner。 BFG Repo-Cleaner更容易使用,因此我使用它。要使用BFG Repo-Cleaner,请按照以下步骤操作:
git clone --mirror git://example.com/some-big-repo.git
标记克隆您的仓库的新副本:git clone --mirror https://example.com/some-big-repo.git
如果使用SSH或java -jar bfg.jar --delete-files [FILE NAME] --no-blob-protection my-repo.git
这是一个裸存储库,因此您无法查看文件,但它将是包含所有提交的存储库的完整副本。 git reflog expire --expire=now --all && git gc --prune=now --aggressive
git gc
- git push
删除了您不希望将数据推回到您的仓库的不需要的数据。 --mirror
将其推回到您的远程仓库 - 请注意,因为您在克隆回购时使用了{{1}}标记,当您回到回购时,您将也会推迟参考变更。要了解有关BFG Repo-Cleaner的更多信息,请访问此link。
答案 1 :(得分:0)
首先获取文件的副本(即app.py
)
从git历史记录中删除文件(用PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA
替换path/to/app.py
(如果您是从远程存储库克隆的,则还需要推送存储库):
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
--prune-empty --tag-name-filter cat -- --all
git push --force --verbose --dry-run
git push --force
现在从app.py
文件中删除密码并将其移至git repo,然后移至add
和commit
答案 2 :(得分:0)
这里有一种替代且快速的解决方法,可以在不删除文件的情况下更改合理数据。
# Sync with the remote master
git pull
# Force your clone to look like HEAD
git reset --hard
# AGAIN, A WARNING: This can really break stuff!
# Run your filter branch command, replacing all instances of "password" with "your_password"
# The example looks for Ruby files ("*.rb"), you can change this to match your needs
git filter-branch --tree-filter 'git ls-files -z "*.rb" |xargs -0 perl -p -i -e "s#(password)#your_password#g"' -- --all
# Overwrite your master with local changes
git push origin master --force
来源:https://palexander.posthaven.com/remove-a-password-from-gits-commit-history-wi