git进行版本控制,push碰到Push cannot contain secrets,即上传文件包含密 ...

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

山水寂寥,街街市商人然,住民相安无事。惋惜人无身影,无记忆,无心。男女可以相亲却不能相爱。爱须故意,而心已被嵌入无数的独角兽头盖骨化为古老的梦。—— 村上春树
  在项目开发过程中,不免会碰到把敏感信息(如API keys、密码、或私密文件)错误提交到Git仓库的情况(一开始推送gitee没提示我含密匙数据,但是github提示了我)。为了避免这些敏感信息走漏,我们必要从Git历史记录中彻底删除它们。本文先容两种主流的方式来删除敏感信息,一种是使用 filter-repo 工具,另一种是通过修改 .gitignore 文件避免再次提交,别的还会先容官网文档中提供的其他方法。

1 方法一:使用 git filter-repo 工具

git filter-repo 并不是Git的默认命令,所以必要通过 pip 来安装:
1.1 确保安装了 Python 和 pip

如果你还没有安装 Python,请前去Python官网下载安装最新版本,具体安装参考其他相关资料。
安装 Python 时会附带安装 pip,可以使用下面的命令确认是否安装成功:
  1. python --version
  2. pip --version
复制代码
1.2 安装 git-filter-repo

使用 pip 安装 git-filter-repo:
  1. pip install git-filter-repo
复制代码
1.3 确认安装成功

安装完成后,可以通过以下命令检查是否成功安装:
  1. git filter-repo --version
复制代码
1.4 使用 git filter-repo 删除敏感信息

现在你可以使用 git filter-repo 来从仓库中删除敏感信息了。假设我们误提交了一个包含敏感信息的文件 config/secrets.yml。
1.4.1备份仓库(非常重要)

操作会直接修改你的历史记录,建议在操作前备份:
  1. git clone --mirror <repository-url> backup-repo.git
复制代码
1.4.2删除敏感文件: 使用以下命令删除提交历史中的指定文件:

  1. git filter-repo --path config/secrets.yml --invert-paths
复制代码
比方:

这个命令会从整个仓库的历史记录中移除 config/secrets.yml 文件。
然后就可以正常add、commit、push了。
2 方法二:修改 .gitignore 防止敏感信息提交(一劳永逸)

如果你只是想避免敏感文件被错误提交到Git仓库,最简单的方法是通过 .gitignore 文件来忽略它们。固然这种方法无法删除历史记录中的信息,但可以防止未来的误提交。
将必要忽略的文件或文件夹路径添加到 .gitignore 文件中。比方:

如果该文件已经提交过,修改 .gitignore 文件并不能删除它,必要将该文件从暂存区移除:
  1. git rm --cached config/secrets.yml
  2. git commit -m "Remove sensitive file from tracking"
复制代码
然后就可以正常推送了,不必要每次都删掉含私密文件后再上传。
3 其他方法:Git官网文档保举的方法

参考:链接: About push protection from the command line
我一开始用了,好像没用对,照旧不行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表