尝试从git历史记录中删除大文件时,refs / heads / master保持不变

时间:2019-07-02 21:19:43

标签: git github

我不小心将几个大于100M的文件放入我的GitHub存储库中,但我尝试将其推送,但失败了。阅读一些在线帖子后,我意识到我需要从git历史记录中删除该大文件。我遵循此处https://help.github.com/en/articles/removing-sensitive-data-from-a-repository中所述的步骤。但是我得到了如下所示的警告,并且这种方法没有奏效。那么/ heads / master,/ remotes / origin / master不变的原因是什么?非常感谢!

C:\Users\10453\source\repos\subgenomeAssignment>git filter-branch --force --index-filter "git rm --cached --ignore-unmatch ./gene Density/Nitab.1-12.gff" --prune-empty --tag-name-filter cat -- --all
Rewrite 2c09639875bee25f33e5233badd74552667d0e33 (47/48) (31 seconds passed, remaining 0 predicted)
WARNING: Ref 'refs/heads/master' is unchanged
WARNING: Ref 'refs/remotes/origin/master' is unchanged
WARNING: Ref 'refs/remotes/origin/master' is unchanged

1 个答案:

答案 0 :(得分:0)

两个文件分别命名为./geneDensity/Nitab.1-12.gff

(请记住,filter-branch通过 shell 传递命令,并且shell在空格处中断参数。)

如果文件实际命名为gene Density/Nitab.1-12.gff,且文件中带有空格,则需要引用文件名。这需要一组与您已经使用过的引号不同的引号,因为您的命令行外壳会删除一组引号。所以:

git filter-branch --force \
    --index-filter "git rm --cached --ignore-unmatch 'gene Density/Nitab.1-12.gff'" \
    --prune-empty \
    --tag-name-filter cat \
    -- \
    --all
例如

可能会成功。 (我已将每组参数单独放在一行上,并使用反斜杠换行符指示外壳程序应继续运行,主要是为了提高可读性,您仍然可以将所有这些作为一行执行;关键是添加引号。我还删除了./,因为通常没有意义地指定./,尤其是在过滤器分支片段中,该命令始终从存储库的顶层运行。)