如何从git push中删除所有.pdf文件

时间:2016-11-30 03:03:09

标签: git

我有一个提交,git diff-tree --no-commit-id --name-only -r fef3ea9ff1ba8d62049fd5f3bc4e2e8a2c08bfd3输出提交中的所有文件。

文件位于不同的文件夹中,许多是.pdf文件

我尝试:git rm *.pdf

并说:fatal: pathspec '*.pdf' did not match any files

如何从提交中删除所有.pdf文件?

编辑1

我尝试:git rm -r *.pdf并且它给出了:

fatal: pathspec '*.pdf' did not match any files

编辑2

sudo git rm -r */*.pdf

给出

fatal: pathspec 'MyFolder/my_file.pdf' did not match any files

my_file.pdf是git diff-tree输出

中列出的第一个文件

3 个答案:

答案 0 :(得分:1)

git rm -r */*.pdf
  • 您需要激活递归标志并使用* /
  • 为filespec添加前缀

答案 1 :(得分:1)

如果git状态显示这些文件已从当前工作树中删除,则可以确保它们在下次提交时被记录为已删除:

 git ls-files --deleted | xargs git rm

如果它们未被删除,您可以找到并删除它们:

 git ls-files | grep '\.pdf$' | xargs git rm

如果它们出现在过去的提交中,并且您想要从任何pdf文件中清除历史记录,请查看BFG repo cleaner(及其issue 78):

bfg -D "*.pdf" myrepo.git

答案 2 :(得分:1)

要删除您可以执行的所有*.pdf个文件:

git ls-files '*.pdf' | xargs git rm

这假定文件仍然存在。

要更新最顶层的提交以便删除文件(除了更改的其他内容之外),您可以执行以下操作:

git commit --amend

要从最近历史记录中某个位置的提交中删除文件,请在TODO列表中使用git rebase --interactive标记要更改的提交后,查找edit并执行上述两项操作提交给你的。

要从历史记录深处的所有提交中删除文件,请查找git filter-branch

在所有情况下,有关重写已发布历史记录的警告都适用。