Git忽略不在gitignore中的文件
我有一个忽略图像文件以及其他一些文件的git仓库,但是我的.gitignore
文件只是忽略了一个config.php
文件。 是否有一些我似乎无法find的全局忽略文件? 我现在必须指定文件来添加它们,它给了我这个警告:
以下path被一个.gitignore文件忽略。
我~/.gitconfig
文件的内容只是我的电子邮件地址。
检查这些:
-
你有没有找过其他的.gitignore文件,因为它们可能有很多。
-
另外,看看REPO / .git / config,看看有没有什么东西。
-
回购排除本地回购规则可以添加到您的回购中的.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 gitignore
, man 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用户,再次运行子模块添加,并没有问题。