【问题标题】:Git filter-branch to remove sensative data not working on windowsGit filter-branch 删除不在 Windows 上工作的敏感数据
【发布时间】:2018-01-16 01:29:56
【问题描述】:

我有一个实验项目正在进行中,由于我只在本地使用它,我添加了敏感数据(秘密和连接字符串)。我现在想在远程推送 repo 之前从 git 历史记录中清除这些数据。我一直在尝试关注 github guide 来执行此操作,并尝试运行此命令:

git filter-branch --index-filter \"git rm --cached --ignore-unmatch C:\Users\George\Source\Repos\myExperimentalProj\server\config.ts" \ --prune-empty - -tag-name-filter cat -- --all

我也试过了-

git filter-branch --index-filter \"git rm --cached --ignore-unmatch .\server\config.ts" \ --prune-empty --tag-name-filter cat -- --全部

但是我总是得到这个错误:

fatal: ambiguous argument 'rm': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

我正在使用带有 git version 2.8.1.windows.1 的 Windows 命令提示符。

我做错了什么?

【问题讨论】:

  • 据我了解,参考指南中的\ 用于转义换行符(作为续行符),但您没有在\ 之后放置换行符。

标签: git github


【解决方案1】:

"--index-filter 之后的参数周围的目的是将整个字符串视为单个参数。您通过转义第一个"(即在" 之前放置\)来打败它,从而导致对导致此错误的命令行的混淆解释。不使用\ 重试

【讨论】:

  • 这似乎已经完成并且工作了(因为它需要一段时间并循环通过大量提交)。但是,最后它打印出大量警告,例如WARNING: Ref 'refs/remotes/origin/master' is unchanged,但是对于每个分支,它似乎并没有改变什么?
  • 这表明它从未找到(在任何提交中)config.ts 文件。路径应该是相对于工作树根的。绝对路径(如您的第一个示例)绝对不适用于索引过滤器。第二个示例,不应该需要前导 ./(尽管我真的不知道它是否会伤害任何东西)...如果这是 从 repo 根目录 到文件的完整路径,那么相对路径应该可以工作 - 但就像我说的,也许在没有 ./ 的情况下试试
【解决方案2】:

您是否按照 github 帮助中的本指南进行操作。 https://help.github.com/articles/removing-files-from-a-repository-s-history/ 该页面还包含此作为参考,可能适合您的情况 https://help.github.com/articles/removing-sensitive-data-from-a-repository/

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2011-12-01
    • 1970-01-01
    • 2013-03-10
    • 2013-03-29
    相关资源
    最近更新 更多