从 Git 仓库中删除并忽略所有具有扩展名的文件。

44

我正在与几位开发人员一起开展Django项目,我们最近意识到应用程序中的所有.pwc文件会导致提交和代码库变得混乱。

是否有办法从Git存储库的所有子目录中删除所有的.pwc文件,并在以后的提交中忽略它们?

4个回答

66

有许多方法可以将它们移除:

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

find . -name *.pwc | xargs git rm

注意:如果你还没有commit它们,只需要使用rm命令而不是git rm

如果想要在将来忽略它们,只需将*.pwc添加到.gitignore中即可。(如果你没有.gitignore文件,在你的代码库的最高层级目录下创建一个名为.gitignore的文件,并添加一行内容"*.pwc")


我后来设置了一个.gitignore,但是*.pwc会在应用程序的每个目录级别中保持被忽略吗? - BenMills
.gitignore 文件在它所在的目录的所有子目录中都会生效。因此,它们通常放置在顶层目录。请注意,如果您只想忽略特定子目录的文件,也可以将其放置在较低的级别。 - Cascabel
如果你遇到了错误 find: paths must precede expression: 'filename.pwc',那么请将你的命令更改为 find . -name '*.pwc' | xargs rm。注意单引号。 - Serhii Popov

30

你也可以使用以下方法:

git rm -r '*.pwc' 

然后让Git忽略这些文件:

echo '*.pwc' >> .gitignore

如果您已经有了.gitignore文件,则使用单个'>'标志,否则请自行创建。


2
是的,但这不会查看子目录。 - jiehanzheng
@jiehanzheng,那不正确,-r标志也会删除子目录中的文件。 - kaveish
对我来说,命令是:git rm -r *.pdf,文件名不需要加引号。 - Roly Poly

6

Windows上,这对我有用:

git rm -r '*.pwc' -f

并将其添加到 .gitignore 文件中

echo '*.pwc' >> .gitignore

1
你真是个救星。你为我节省了大量时间! - user14221871
也适用于 macOS。 - Sam Soffes

3
Jefromi的回答将在现在和未来删除它们...您还可以使用 git filter-branch在过去中删除它们。当然,这会产生其他影响,比如要求其他人重新检出工作库(并可能对他们尚未推送到主库的工作进行变基)。取决于PWC文件的大小,如果它们在您的存储库中浪费了大量磁盘空间(因为每次克隆git存储库时,您都会获得每个文件和每个修订版本),则可能需要执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接