【问题标题】:How to clean untracked or ignored files when containing several .gitignore包含多个 .gitignore 时如何清理未跟踪或忽略的文件
【发布时间】:2014-11-17 05:39:07
【问题描述】:

平台: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 -fdx,则AucTeX.gitignore 文件将通过删除存储库下的*.elc 文件而生效。

如何禁用不是我创建的.gitignore 文件?

如何停用附加在其他 Emacs elpa 包中的 .gitignore 文件?

【问题讨论】:

  • .gitignore 文件存在于根目录中,在您的情况下为 AucTex 目录。搜索此文件并简单地删除它。添加并提交。 .gitignore 现在将停止跟踪,因为它不再存在。

标签: git emacs elpa


【解决方案1】:

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

如果您提交 .elc 文件(即 portable),git 不会想要清理它们。

就我个人而言,我总是这样做。我不想使用未编译的代码运行,也不想不必要地重新编译所有内容。遇到可移植性问题的机会非常渺茫——如果你确实遇到了问题并想重新编译一个库,那么如果有现有的.elc 文件来告诉 Emacs 哪些文件应该 被编译。

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

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

【讨论】:

  • 我已经尝试过git clean -ndxgit clean -ndX。他们都将清除所有.elc 文件。您在帖子中提到 .elc 文件是未跟踪的文件。我认为情况就是这样。我确实提交了.elc 文件并将其推送到 github Web 存储库。
猜你喜欢
  • 1970-01-01
  • 2014-04-01
  • 2018-09-29
  • 2015-06-18
  • 2015-02-03
  • 2019-11-07
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多