我有一个 Django 项目,我已经将其保密很长一段时间了。在我参与的项目的整个生命周期中settings.py
, base_settings.py
, and secret_settings.py
包含敏感信息的文件。现在我决定将代码开源,因为我不再积极参与该项目。
我运行下面的命令来删除这些文件的历史记录,以确保所有敏感信息都消失了。
git filter-branch -f --tree-filter 'rm -f exchange/secret_settings.py' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/base_settings.py' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/settings.py' HEAD
然而,github 警告我仍然有提交包含包含 AWS 信息的 .py~ 文件,所以我运行了:
git filter-branch -f --tree-filter 'rm -f exchange/settings.py~' HEAD
我已保护我的 AWS 账户并从 AWS 中删除了所有密钥,因此我的账户是安全的。然而,现在我的整个提交历史记录中有重复的提交,有时是 3 或 4 个。
我找到了各种答案,说我可以恢复到一些.git/refs
备份,但这似乎不起作用。
这是该项目:https://github.com/ProgrammingJoe/Texchange https://github.com/ProgrammingJoe/Texchange
有谁知道我能做什么来解决这个问题?
在 jhill 的评论之后,我最终做了一些谷歌搜索,并在新分支上运行了以下命令:
git filter-branch -f --tree-filter 'rm -f exchange/settings.py' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/settings.py~' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/base_settings.py' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/base_settings.py~' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/secret_settings.py' HEAD
git filter-branch -f --tree-filter 'rm -f exchange/secret_settings.py~' HEAD
之后,我的新分支以大约 300 次提交回到了我想要的位置。然后我必须弄清楚如何用另一个分支完全覆盖 master 。在良好的实践中,我将我的存储库克隆到另一个位置作为备份。然后我尝试了各种强制推送和合并的组合来覆盖主分支,但没有任何效果。然后我问了这个问题:Github,我的分支位于master后面,但它是正确的。如何用分支覆盖master? https://stackoverflow.com/questions/47421855/github-my-branch-is-behind-master-but-it-is-correct-how-do-i-overwrite-master
然后我意识到我在 master 中的一些旧提交正是我想要的,所以我运行了:
git checkout master
git reset --hard correct_commit_id
git push -f origin master
这解决了我的所有问题,但我不小心删除了我曾经拥有的一个文件。还好我有备份:)。我不知道为什么git reset --hard fixed_branch
过去没有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)