我错误地将一个包含密码的文件推到了我的回购协议中-仅供参考回购协议只是一个小的个人项目。
当我意识到密码存在时,我将文件添加到.gitignore
并执行git rm -r --cached <filename>
,提交并推送到repo。
我现在意识到密码仍然存在于历史记录中-删除它的最佳方法是什么?
我读了Github上的Remove sensitive data页面,它建议更改密码-我已经这样做了-但我也想删除历史记录。
我错误地将一个包含密码的文件推到了我的回购协议中-仅供参考回购协议只是一个小的个人项目。
当我意识到密码存在时,我将文件添加到.gitignore
并执行git rm -r --cached <filename>
,提交并推送到repo。
我现在意识到密码仍然存在于历史记录中-删除它的最佳方法是什么?
我读了Github上的Remove sensitive data页面,它建议更改密码-我已经这样做了-但我也想删除历史记录。
3条答案
按热度按时间2w2cym1i1#
由于在包含明文密码的提交之后你已经提交了5次,所以最好在本地分支上以交互模式执行
git rebase -i
,找到你添加明文密码的提交的SHA-1,然后输入以下代码:其中
dba507c
是错误提交的SHA-1的前7个字符。更改此内容:
对此:
对密码文件进行更改以删除明文,然后提交结果,如下所示:
完成rebase,然后通过以下方式将(正确的)本地分支推送到远程:
你需要强制推送
your_branch
,因为你已经重写了历史(通过修改密码文件)。现在你有了所有最近的提交,但是你已经删除了明文。syqv5f0l2#
如果是以前的提交,则从文件中删除密码并运行
注意:一旦你在Stackoverflow上发布了这个,很多人可能已经克隆了这个repo(你在github上有相同的用户名,只有一个仓库)。更改密码!
vmpqdwk33#
你可以在分支中使用
git reset --soft
来撤销最后一次提交。然后从相应的文件中删除凭据。
然后执行命令序列
git add <updated-file>
、git commit
和git push -f
。例如: