【发布时间】:2016-04-22 13:52:24
【问题描述】:
我有一个本地项目,我已经使用了一段时间。在这个项目中有一些包含密码的配置数据。我现在想在 Github 上公开这个项目,并且想拆分配置数据,而不是像我从一开始就应该做的那样签入敏感数据。但是,即使在 HEAD 处执行此操作,数据仍然在提交历史记录中可用。
有没有办法解决这个问题,还是我必须删除所有旧提交并只使用公共 repo 中的一个最新的干净提交?
在可用选项之间,哪个是最典型的?
【问题讨论】:
标签: git
我有一个本地项目,我已经使用了一段时间。在这个项目中有一些包含密码的配置数据。我现在想在 Github 上公开这个项目,并且想拆分配置数据,而不是像我从一开始就应该做的那样签入敏感数据。但是,即使在 HEAD 处执行此操作,数据仍然在提交历史记录中可用。
有没有办法解决这个问题,还是我必须删除所有旧提交并只使用公共 repo 中的一个最新的干净提交?
在可用选项之间,哪个是最典型的?
【问题讨论】:
标签: git
【讨论】:
有一个很棒的 Git 功能,叫做 filter-branch。它允许你重新创建 Git 历史,在每一步应用一个命令。在这种情况下,您可以使用它来删除您的敏感文件:
git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch my/sensitive/file' HEAD
值得指出的是,与所有这些 Git 魔法一样,新重写的分支将具有与原始分支不同的“家谱”,因此您将无法来回合并。换句话说,任何在原始 repo 上工作的人都需要在提交任何工作之前获取新分支。
【讨论】: