chiikawa&q 2024-09-02 11:11 采纳率: 93.3%
浏览 4
已结题

关于#git#的问题:现在我发现这些提交中有一些历史提交包含敏感信息

在一个 Git 仓库中,我正在一个名为 feature-branch 的分支上进行开发,已经进行了多次提交。现在我发现这些提交中有一些历史提交包含敏感信息,需要被移除。同时,我希望保留这些提交中其他的更改内容。请问如何操作才能从 Git 历史中移除这些敏感信息,同时保持代码的完整性?

  • 写回答

1条回答 默认 最新

  • 小ᶻ☡꙳ᵃⁱᵍᶜ꙳ 优质创作者: 人工智能技术领域 2024-09-02 11:16
    关注

    使用 git filter-repo 移除敏感信息

    1. 确保安装了 git filter-repo:
      如果你还没有安装,可以按照官方文档进行安装。通常可以使用以下命令:
      pip install git-filter-repo
      
    2. 备份当前仓库:
      在进行敏感操作前,最好备份当前仓库,以防出现问题:
      git clone --mirror <repository-url> backup-repo.git
      
    3. 使用 git filter-repo 过滤敏感信息:
      假设敏感信息在某个文件 sensitive.txt 中,你可以运行以下命令来移除所有包含该文件的提交:
      git filter-repo --path sensitive.txt --invert-paths
      
    4. 清理其他敏感信息(如具体内容或代码片段):
      如果敏感信息并不是整个文件,而是文件中的某些行,可以使用以下命令来进行更细粒度的过滤:
      git filter-repo --replace-text <(echo "sensitive-data==>")
      
    5. 强制推送到远程仓库:
      由于这是对历史记录的更改,需要强制推送:
      git push origin --force
      
      注意事项:
    • 使用 git filter-repo 会重写历史,因此远程和本地的提交哈希会改变。所有合作开发的同事需要在本地重新克隆或拉取最新的历史记录。
    • 强制推送后,所有已被修改的提交在其他开发者的历史中将不再可见。
    • 确保在执行这些操作之前,团队已经了解并同意进行这样的更改。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月10日
  • 已采纳回答 9月2日
  • 创建了问题 9月2日