我有一个提交,git diff-tree --no-commit-id --name-only -r fef3ea9ff1ba8d62049fd5f3bc4e2e8a2c08bfd3
输出提交中的所有文件。
这些文件位于不同的文件夹中,其中许多是 .pdf 文件
我尝试:git rm *.pdf
它说:致命:pathspec'*.pdf'与任何文件都不匹配
如何从提交中删除所有 .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
输出中列出的第一个文件
最佳答案
要删除所有 *.pdf
文件,您可以执行以下操作:
git ls-files '*.pdf' | xargs git rm
这假设文件仍然存在。
要更新最顶层的提交以删除文件(除了它更改的其他内容之外),您可以执行以下操作:
git commit --amend
要从最近历史记录中某个位置的提交中删除文件,请查找 git rebase --interactive
并在使用 标记要更改的提交后执行上述两项操作>在呈现给您的 TODO 列表中编辑
。
要从埋藏在历史深处的所有提交中删除文件,请查找 git filter-branch
。
在所有情况下,有关重写已发布历史的警告都适用。
关于git - 如何从 git 推送中删除所有 .pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879523/