gpt4 book ai didi

git - 如何从github历史记录中的文件中删除敏感数据

转载 作者:行者123 更新时间:2023-12-04 00:21:58 24 4
gpt4 key购买 nike

我正在使用一个共享的 github 存储库来协作一个项目。因为我是个白痴,所以我提交并推送了一个包含我不想共享的密码的脚本文件(是的,我可以更改密码,但无论如何我想删除它!)。

有没有办法从github的历史记录中恢复提交,在本地删除密码,然后重新提交并推送更新的文件?我不想完全删除文件,也不想丢失 github 上的提交历史记录。

(这个问题
How can I completely remove a file from a git repository?
显示如何删除敏感文件,但不显示如何从文件中编辑敏感数据,因此这不是重复的)

最佳答案

我建议使用新的 git filter-repo , 其中 replaces BFG and git filter-branch .
注意:如果您在运行上述命令时收到以下错误消息:

Error: need a version of `git` whose `diff-tree` command has the `--combined-all-paths` option`
这意味着你必须 update git .

第一:做一份本地仓库的副本(一个新的克隆)
参见“ Content base filtering”:
最后,您可以(如果您是唯一一个在该存储库上工作的人)执行 git push --force

If you want to modify file contents, you can do so based on a list of expressions in a file, one per line.
For example, with a file named expressions.txt containing:

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

then running

git filter-repo --replace-text expressions.txt

will go through and replace:

  • p455w0rd with ***REMOVED***,
  • foo with bar,
  • any line containing 666 with a blank line,
  • the word driver with pilot (but not if it has letters before or after; e.g. drivers will be unmodified),
  • the exact text MM/DD/YYYY with YYYY-MM-DD and
  • date strings of the form MM/DD/YYYY with ones of the form YYYY-MM-DD.

关于git - 如何从github历史记录中的文件中删除敏感数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59850631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com