致命:不能使用.git / info / exclude作为排除文件

时间:2017-01-18 17:25:24

标签: git laravel-5.3 gitignore

我有一个带有.gitignore文件的Laravel 5.3项目但是当我执行git status时,我收到此消息:

fatal: cannot use .git/info/exclude as an exclude file

我已执行此命令以说明.gitignore

的位置
git config --global core.excludesfile C:\xampp\htdocs\codehacking5.3\.gitignore

但是不起作用。

请问好吗?

3 个答案:

答案 0 :(得分:0)

问题是,排除文件因任何原因为空。我已经把另外一个包含内容的排除文件放入了,问题就解决了

答案 1 :(得分:0)

只需删除文件即可完成。参见here

答案 2 :(得分:0)

这可能会也可能不会直接解决上述问题,但由于这是我在搜索类似错误时遇到的问题,我将在这里发布我最终找到的解决方案。

首先,我修改后的问题描述(针对我遇到的情况):

我的情况是我试图构建一个工具来跟踪对子目录中被忽略文件的修改,而不将它们检入到 repo 中。虽然我不想跟踪文件(大型数据文件,在别处生成且可替换),但我确实想为它们收集校验和,偶尔更新它,并在 git 中跟踪校验和文件。作为拼图的一部分,我正在尝试以下操作:

git ls-files --exclude-from=data/.gitignore --ignored --others data

这产生了与上述非常相似的错误:

fatal: cannot use data/.gitignore as an exclude file

然而,这对我来说似乎很奇怪,好像我做了一个 cat data/.gitignore,我可以看到文件在那里,我可以读取,并且包含 gitignore 文件的正常内容。

这里有一个问题:data 目录(因此 data/.gitignore 位于主 git 存储库的子目录中,并且 git 命令将目录更改为存储库的根目录(如 { {1}})...相对于该目录,该文件确实不存在。

解决方案(至少对我而言):

git rev-parse --show-toplevel 选项中,确保您指定的文件名相对于 git 存储库的根目录(如 --exclude-from 所示)...所以,对我来说,更改命令(我从 git rev-parse --show-toplevel 内运行)到:

subdir

... 成功了。

(就其价值而言,我通过在 GNU/Linux 系统上的 git ls-files --exclude-from=subdir/data/.gitignore --ignored --others data 命令上运行 strace -f 并弄清楚当它试图引用该文件时发生了什么...它正在从 git ls-files ... 获取 ENOENT(“没有这样的文件或目录”),鉴于我能够访问该文件,这是我没想到的,所以我认为它一定做了一个open(2),寻找并找到了。)