从git历史记录中删除文件 - 错误的修订错误

时间:2015-09-22 10:54:31

标签: git

我按照Github上的说明(https://help.github.com/articles/remove-sensitive-data/)来整理一个混乱的存储库。我已成功使用

清除所有.csv文件
[Table("Person")]
public class Person { ... }

现在需要删除所有.docx文件。但是,当我使用与* .docx完全相同的命令时,我收到一条错误消息: git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch *.csv' \ --prune-empty --tag-name-filter cat -- --all

我在github上推送到原点,并在进行第二次更新之前克隆了一份新的副本。我不确定我做错了什么/不同导致这个错误。任何帮助非常感谢:)

6 个答案:

答案 0 :(得分:50)

Git应该从cmd.exe或bash运行。

问题是在命令中使用'。 Windows仅使用"。 您正在寻找的命令是:

git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch *.csv" \
--prune-empty --tag-name-filter cat -- --all

答案 1 :(得分:19)

解决了......我在--prune-empty部分之前放入反斜杠后取出了空格,现在按预期工作了! 不知道它为什么有效......

答案 2 :(得分:8)

从Windows命令行运行时我遇到了类似的错误(fatal: bad revision 'rm'),我无法像你那样解决空格问题。

但我可以解决它从git bash命令行运行相同的命令。 也许这可以帮助有同样问题的人。

答案 3 :(得分:3)

没有一个建议的答案对我有用,尽管它们没有反斜杠

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch *.csv" --prune-empty --tag-name-filter cat -- --all

答案 4 :(得分:0)

在Visual Studio Code终端中,使用双引号且不使用反斜杠来编写它:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch *.csv" --prune-empty --tag-name-filter cat -- --all

答案 5 :(得分:0)

这在Windows上非常适合我:

git filter-branch --tree-filter "git rm -f --cached --ignore-unmatch path/to/file.txt" -- --all

它重写了所有历史记录,在git push之后,我可以在存储库上看到结果。