如何在包含多个.gitignore时清除未跟踪或忽略的文件

时间:2014-11-17 05:39:08

标签: git emacs elpa

平台:Windows 8.1

为了简化Emacs配置,我将我的Emacs个人文件夹C:\Users\username\AppData\Roaming\.emacs.d上传到github。

通常我使用Emacs 24.3编辑init.el文件,然后在同一文件夹下创建名为init.el~的副本。在.gitignore的帮助下,我在*~的尾部斜杠文件中添加了一行git clean -fdx

问题是像elpa这样的AucTeX包,它拥有一个自包含的.gitignore文件。此文件可能包含要删除我要保留的*.elc文件的模式。所以我的存储库下有几个.gitignore个文件。一个是由我自己创造的。其他用于elpa包。

如果我尝试git clean -fdxAucTeX的{​​{1}}文件将通过删除存储库下的.gitignore文件生效。

如何禁用非我创建的*.elc文件?

如何停用附加其他Emacs .gitignore套餐的.gitignore个文件?

1 个答案:

答案 0 :(得分:0)

我觉得你可能对git clean参数感到困惑? -x参数告诉g​​it clean 不注意.gitignore个文件的内容(以便所有未跟踪的文件被删除)。 {em>未删除.elc个文件,因为它们列在AucTeX的.gitignore文件中;它们被删除是因为它们是未跟踪文件,并且因为你告诉git不要将.gitignored文件视为受保护文件。

如果您提交.elc个文件(portable),git将不想清除它们。

就个人而言,我总是这样做。我不想使用未编译的代码运行,我不想让你不必要地重新编译所有内容。遇到可移植性问题的可能性非常小 - 如果遇到问题并且想要重新编译库,如果有现有的.elc文件告诉Emacs哪些文件,那就更容易了应编译。

https://github.com/tarsius/auto-compile添加到组合中,您的.elc文件将始终存在并且是最新的。

如果您不想这样做,那么我猜您要么在没有-x参数的情况下运行git clean,并在另一个传递中处理来自根级别.gitignore的文件模式;或者使用--dry-run参数来显示它将删除的内容,并过滤掉您想要实际保留的文件(在这种情况下,您可以在没有-x的情况下进行第一次传递,然后使用{进行第二次传递你会过滤的{1}}(大写)。