Git忽略了不在gitignore中的文件

Ian*_*ter 104 git gitignore

我有一个git存储库忽略了图像文件以及一些其他文件,但我的.gitignore文件只忽略了一个config.php文件.是否有一些我无法找到的全局忽略文件?我必须指定文件才能立即添加它们,并且它给了我这个警告:

您的.gitignore文件会忽略以下路径.

我的~/.gitconfig文件内容只是我的电子邮件地址.

ken*_*orb 178

git check-ignore

使用git check-ignore命令调试gitignore文件(排除文件).

例如:

$ git check-ignore -v config.php
.gitignore:2:src    config.php
Run Code Online (Sandbox Code Playgroud)

以上输出详细说明了每个给定路径名(包括行)的匹配模式(如果有).

所以也许你的文件扩展名不会被忽略,而是整个目录.

返回的格式为:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
Run Code Online (Sandbox Code Playgroud)

或使用以下命令打印您.gitignore的用户HOME和存储库文件夹:

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

或者使用git add -f允许添加否则忽略的文件.

请参阅:man gitignore,man git-check-ignore了解更多详情.

句法

git check-ignore [options] pathname ...

git check-ignore [options] --stdin

  • 这比接受的答案要好得多.没有冒犯那个,但这节省了我的一天.谢谢kenorb. (5认同)
  • 只有git> = 2.6 (5认同)
  • 这就是我需要的,所有的大写谢谢你 (3认同)
  • 今天这个节省了我...似乎visual studio在用户文档文件夹中创建了一个名为gitignore_global.txt的文件,这忽略了我无法忽略的文件 (2认同)

gab*_*elf 49

最好知道你的git配置可以包含一个core.excludes文件,它是一个文件的路径,其中包含被忽略的其他模式.你可以通过运行(在有问题的git repo中)找出你是否有这样的配置:

git config core.excludesfile
Run Code Online (Sandbox Code Playgroud)

如果它打印文件路径,请查看该文件的内容以获取更多信息.

在我的情况下,我通过旧版本的boxen安装了git ,忽略了'Icon'模式.在我的情况下,我在这个问题中提到了一个文件夹图标的警告(我在一个不区分大小写的文件系统上,这就是为什么Icon?匹配图标).

  • 这确实是我的问题。不确定如何或何时编辑此文件,但其中包含我想要的文件 (2认同)
  • 谢谢你,你救了我几个小时的痛苦.在我的例子中,它是安装源树(一个工具可视化git repo),它在文档文件夹下无意识地创建了一个gitignore_global.txt,其中包含大量的排除项. (2认同)

gah*_*ooa 30

看看这些:

  1. 你有没有找过其他的.gitignore文件,因为它们可能有很多.

  2. 另外,查看REPO/.git/config以查看是否有任何内容.

  3. Repo排除本地per-repo规则可以添加到repo中的.git/info/exclude文件中.这些规则不会与回购协议一起提交,因此不会与其他人共享.此方法可用于本地生成的文件,您不希望其他用户生成这些文件,例如编辑器创建的文件.

  • 目前尚不清楚为什么这个答案被标记为已回答.这个问题究竟是如何解决的? (4认同)

She*_*aun 21

我有同样的问题 - git忽略了一个目录,出现此错误:

? git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added
Run Code Online (Sandbox Code Playgroud)

我终于弄明白我的问题是我的一句话~/.gitignore_global:

TAGS
Run Code Online (Sandbox Code Playgroud)

这是匹配路径app/views/admin/tags.我通过向全局gitignore文件添加一个前导斜杠来修复它

/TAGS
Run Code Online (Sandbox Code Playgroud)

并且git再次开始跟踪我的目录.

  • +1让我查找部分匹配... gitignore_global.txt包含"[Rr] elease*/"这导致我的"releasenotes"目录被忽略. (3认同)

Bri*_*ian 8

对我来说,我在〜/ .gitignore_global文件中偶然出现了一个通配符.也许检查一下?