Git忽略不在gitignore中的文件

我有一个忽略图像文件以及其他一些文件的git仓库,但是我的.gitignore文件只是忽略了一个config.php文件。 是否有一些我似乎无法find的全局忽略文件? 我现在必须指定文件来添加它们,它给了我这个警告:

以下path被一个.gitignore文件忽略。

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

检查这些:

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

  2. 另外,看看REPO / .git / config,看看有没有什么东西。

  3. 回购排除本地回购规则可以添加到您的回购中的.git / info / exclude文件。 这些规则不是用回购提交的,所以他们不与他人分享。 此方法可用于本地生成的文件,而不需要其他用户生成文件,如编辑器创build的文件。

git check-ignore

使用git check-ignore命令来debugging你的gitignore文件(排除文件)。

例如:

 $ git check-ignore -v config.php .gitignore:2:src config.php 

上面的输出详细介绍了每个给定path名(包括行)的匹配模式(如果有的话)。

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

返回的格式是:

 <source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname> 

或者使用以下命令在用户HOME和存储库文件夹中打印.gitignore

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

或者使用git add -f ,它允许添加被忽略的文件。

请参阅: man gitignoreman git-check-ignore了解更多详情。

句法

git check-ignore [选项]path名…

git check-ignore [options] –stdin

知道你的gitconfiguration可以包含一个core.excludes文件,这个文件的path可能被忽略, 你可以通过运行(在有问题的git仓库中)找出你是否有这样的configuration:

 git config core.excludesfile 

如果打印文件path,请查看该文件的内容以获取更多信息。

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

我有同样的问题 – 一个目录被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 

我终于明白我的问题是在我的~/.gitignore_global的一行:

 TAGS 

它与pathapp/views/admin/tags匹配。 我通过向全球gitignore文件添加一个前导斜杠来解决这个问题

 /TAGS 

和git开始跟踪我的目录了。

对我来说,我不小心在我的〜/ .gitignore_global文件中有一个通配符。 也许在那里检查?

另一件尝试:我有一个目录B与自己的.git存储库嵌套在我的项目目录A(但不是一个子模块)。 我对B做了一些改变,想把它变成一个真正的子模块。 我相信git A会自动忽略B,因为它包含自己的仓库(请参阅无子模块的嵌套git仓库? )。 我重命名了B文件夹,并试图再次克隆它作为子模块,这给我带来误导性的“忽略.gitignore”错误消息。 解决办法是从B中删除.git

我和你有完全相同的问题。 你列出的唯一的答复几个地方检查,但没有一个解决了我的问题,从你的评论我也不认为你。 我没有其他的.gitignore文件隐藏在目录树的较低处; 没有在.git /configuration; 没有在.git / ingore /排除

如果你仍然有问题,请检查这个答案 。 它解决了我的问题

基本上,检查一个〜/ .gitignore文件。 矿被称为〜/ .gitignore_global。 我不知道它是什么时候创build的( 当然没有做到),但是当我第一次安装的时候,我尝试了很多不同的git安装程序,所以其中一个必须放在那里。

希望他的回答也能帮助你!

从git收到这个错误信息的另一个原因是,当执行git submodule add命令时,以前的git命令已经崩溃并且离开了locking文件(这可能发生,例如,当您使用包含git命令的自定义脚本,注意到了崩溃)。

如果你执行命令git commit ,而没有任何条件已经改变( git submodule add会继续大声说你的.gitignore文件是责怪),你会看到另一个错误报告:

 $ git commit -a fatal: Unable to create '..../.git/index.lock': File exists. If no other git process is currently running, this probably means a git process crashed in this repository earlier. Make sure no other git process is running and remove the file manually to continue. 

并确实删除了lockfile:

 rm .git/index.lock 

解决了这个问题。 (这种情况发生在git 2.1.0.9736版本,可能会在未来的git版本中修复)

请检查可能由某些Git客户端(例如Mac OS X上的Atlassian SourceTree)创build的~/.gitignore~/.gitignore_global

检查你有权限的文件夹。 我刚刚遇到这个,这是因为该文件夹是由www数据用户拥有,而不是我login到terminal的用户。

确保.gitignore文件不会忽略自身。 常见的错误是在.gitignore文件中添加*规则以忽略当前文件夹中的每个文件。 解决方法是给.gitignore添加一个例外:

 * !.gitignore 

这样,目录中的所有文件将被忽略,除了.gitignore

在我的情况下,这是我的道路上的正斜杠造成的问题…

不行

 /srv/bootstrap/ 

工作

 srv/bootstrap/ 

还有一件事:如果您所在的目录需要root权限才能写入或执行,请确保您位于root用户。 我真的得到了一个奇怪的错误,我试图添加一个子模块和git不断抱怨我克隆到的path被git忽略文件忽略。 然后我改为root用户,再次运行子模块添加,并没有问题。