如何从github历史记录中的文件中删除敏感数据
我正在使用一个共享的github存储库来协作一个项目。因为我是个白痴,我提交并推送了一个脚本文件,其中包含一个我不想共享的密码(是的,我可以更改密码,但无论如何我都想删除它!) 有没有办法从github的历史记录中恢复提交,在本地删除密码,然后重新提交并推送更新的文件?我不想完全删除该文件,也不想丢失github上的提交历史记录 (这项质询 显示如何删除敏感文件,但不显示如何编辑文件中的敏感数据,因此这不是重复的)使用BFG: 要删除文件,请执行以下操作:如何从github历史记录中的文件中删除敏感数据,git,github,revert,Git,Github,Revert,我正在使用一个共享的github存储库来协作一个项目。因为我是个白痴,我提交并推送了一个脚本文件,其中包含一个我不想共享的密码(是的,我可以更改密码,但无论如何我都想删除它!) 有没有办法从github的历史记录中恢复提交,在本地删除密码,然后重新提交并推送更新的文件?我不想完全删除该文件,也不想丢失github上的提交历史记录 (这项质询 显示如何删除敏感文件,但不显示如何编辑文件中的敏感数据,因此这不是重复的)使用BFG: 要删除文件,请执行以下操作: $ bfg --delete-file
$ bfg --delete-files <file to remove> my-repo.git
我建议使用新的,这是 注意:如果在运行上述命令时收到以下错误消息:
Error: need a version of `git` whose `diff-tree` command has the `--combined-all-paths` option`
这意味着你必须这么做
第一:复制一份本地回购协议(新克隆) 见“”: 最后,您可以(如果您是唯一一个在该存储库上工作的人)执行一个
git push--force
如果要修改文件内容,可以根据文件中的表达式列表进行修改,每行一个。例如,一个名为
expressions.txt
的文件包含:
p455w0rd
foo==>bar
glob:*666*==>
regex:\bdriver\b==>pilot
literal:MM/DD/YYYY=>YYYY-MM-DD
regex:([0-9]{2})/([0-9]{2})/([0-9]{4})==>\3-\1-\2
然后跑
git filter-repo --replace-text expressions.txt
将通过并替换:
已删除***p455w0rd
带foo
条
- 包含带有空行的
的任何行666
- 单词
和driver
(但如果前面或后面有字母,则不包括在内;例如,drivers将不被修改)pilot
- 带有
的确切文本YYYY-MM-DD
和MM/DD/YYYY
- 格式为
的日期字符串与格式为MM/DD/YYYY
的日期字符串李>YYYY-MM-DD
这回答了你的问题吗?我不希望丢失github上的提交历史记录:要清楚,您仍然希望提交历史记录包含带有密码的文件的可查看修订版?不-对不起,我不干净-我希望提交历史记录的其余部分,但删除密码HMMM。。这将清理我的git回购,但如果我推到github,它不只是添加另一个(清理)提交并将密码保留在github历史记录中?使用BFG将从整个历史记录中删除密码,但您必须强制推送以覆盖当前内容已安装BFG但
BFG--replace text passwords.txt
给我一个语法错误BFG--replace text passwords.txt^语法错误:无效语法
语法错误
看起来像Python错误。我怀疑您是在Python命令行中运行该命令的。在操作系统控制台,操作系统命令解释器中运行它。赛尔夫注意:这是我关于堆栈溢出的第23000个答案(在136个月内),是在测试结束5个月后。在此之前:。。。
p455w0rd
foo==>bar
glob:*666*==>
regex:\bdriver\b==>pilot
literal:MM/DD/YYYY=>YYYY-MM-DD
regex:([0-9]{2})/([0-9]{2})/([0-9]{4})==>\3-\1-\2
git filter-repo --replace-text expressions.txt