【问题标题】:How can I remove all traces of a file from a git repository without removing it from the directory? [duplicate]如何从 git 存储库中删除文件的所有痕迹而不将其从目录中删除? [复制]
【发布时间】:2013-01-23 02:37:15
【问题描述】:

遵循Github guide on removing sensitive data 似乎会导致有问题的文件被完全删除,包括从目录中删除。有没有办法只从 git 存储库中删除有问题的文件(好像它从未被提交过),但不从目录中删除它?显然它应该被添加到 .gitignore 文件中。

注意:这只是一个假设问题;我实际上并没有暴露敏感信息。

编辑:我确实意识到我可以简单地将文件复制出目录,然后按照 Github 上的说明将其移回。我想知道是否有“git方式”来完成我的要求。

【问题讨论】:

  • 进行备份并在清理后恢复?对不起,如果这听起来很愚蠢或者我不明白这个问题
  • 将文件复制到某处,根据 GitHub 的指南将其删除,然后在本地再次添加,同时将其添加到 .gitignore。
  • @CharlesB 我意识到这将是“简单”的解决方案——我只是想知道是否有一种方法可以使用 git 命令来完成我所要求的。我编辑了我的问题以添加该信息。谢谢!
  • 为什么要增加 git 命令的复杂性,而您可以简单地使用批处理脚本来完成?
  • @ChrisSobolewski 你的说法并不真实。实际上文件可能是之前创建的,但不能暂存。

标签: git


【解决方案1】:

git rm --cached 会从索引中删除一个文件,而不会实际从工作副本中删除该文件,您可以根据 your-link 使用 git filter-branch 从存储库的历史记录中清除一个文件。

【讨论】:

    【解决方案2】:

    从 git 存储库中删除它。您可以按照问题中链接的 github 页面中描述的步骤进行操作。 只需将您的文件复制到另一个目录并在执行 git 过程后将其移回即可。

    既然您的存储库是公开的(例如在 github 上),您就不能安全地假设您的敏感数据尚未被其他用户获取。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 2014-02-08
      • 2012-02-23
      • 2016-04-27
      • 2021-01-04
      • 2011-09-12
      • 1970-01-01
      • 2015-01-20
      相关资源
      最近更新 更多