【问题标题】:git does not ignore files that should be excludedgit 不会忽略应该排除的文件
【发布时间】:2020-05-25 10:26:29
【问题描述】:

情况

在 Ubuntu 16.04 LTS 中使用 gedit 3.18.3。

我的 .git/info/exclude 文件是

# git ls-files --others --exclude-from=.git/info/exclude
# 以 '#' 开头的行是 cmets。 # 对于一个主要使用 C 语言的项目,以下将是一组很好的
# 排除模式(如果你想使用它们,请取消注释):
# 文件
*.[oa]
*~
*.log
生成文件*

所以我希望匹配*~ 模式的文件会被忽略。

问题

但是,这些都保留在计数中

git status 

On branch v2
Your branch is up-to-date with 'origin/v2'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   README.md
modified:   README.md~

no changes added to commit (use "git add" and/or "git commit -a")

此行为由

确认
git ls-files --cached --ignored --exclude-standard

Git: List files that should be ignored, but are not建议的那样

问题

我不希望 README.md~ 或任何其他 *~ 文件出现在列表中。
这曾经像微风一样工作,但我无法确定出错的时刻。
请问有什么提示和解决方法吗?

【问题讨论】:

标签: git gitignore


【解决方案1】:

自从

modified:   README.md

出现在您的git status 中,我可以看到您之前已经提交了该文件。它只会被忽略,如果尚未版本化,因此您必须先将其删除。

为什么要对文件进行版本控制?可能是:

  • 在排除文件存在之前添加了文件(或添加了排除模式)
  • 被强行添加(git add -f)
  • 其他贡献者添加了该文件(请参阅下面关于 .git/info/exclude 的备注)

编辑:查看如何从版本控制中删除文件的示例,但保留本地副本: https://stackoverflow.com/a/1143800/1050264

还可以查看.gitignore(版本化)和.git/info/exclude(仅限本地)之间的区别。后者不会忽略存储库其他克隆的文件:https://stackoverflow.com/a/22906964/1050264

【讨论】:

  • 我承认,一旦我删除了这个*.~ 文件并再次修改它,它就不再被 git status 计算在内。但是,如果该文件之前已提交,那是因为排除文件已被忽略。要解决的根本问题是 git 在早些时候忽略了它自己的排除列表文件。我分享的信息可能有任何错误吗?换句话说:我可以手动修复这个文件,但我希望 git 遵循排除文件中给出的规则,特别是当这涉及多个目录和文件时
  • 不管 .gitignore 文件如何,您始终可以使用 git add -f 将文件强制添加到 git。
  • Hmm... 可能是,该文件是在忽略文件存在之前添加的,它是强行添加的,或者是由其他人提交的(如果 repo 是共享的) - 请注意,.git/info/exclude 仅用于对于您的克隆:stackoverflow.com/questions/22906851/…
【解决方案2】:

许多人似乎对 gitignore 文件的作用有一个错误的想法。

  • 它不会阻止您添加文件。

  • 而且它不会阻止跟踪的文件被跟踪。

它只是阻止 git 假设文件 需要 被跟踪,如果它还没有在索引中。例如,如果您从未向此存储库添加任何内容并且您说 git add .,则不会添加此文件。

但是一旦你添加了它,那就结束了,git 现在正在跟踪这个文件。它在索引中,这才是最重要的。

【讨论】:

    猜你喜欢
    • 2016-01-20
    • 1970-01-01
    • 2011-02-12
    • 2015-11-30
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多