我按照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上推送到原点,并在进行第二次更新之前克隆了一份新的副本。我不确定我做错了什么/不同导致这个错误。任何帮助非常感谢:)
答案 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
之后,我可以在存储库上看到结果。