gpt4 book ai didi

git check-ignore 输出为空但仍然被忽略

转载 作者:太空狗 更新时间:2023-10-29 13:42:46 29 4
gpt4 key购买 nike

我有一个被忽略的文件夹 logs/:

$ $ git status -s --ignored logs
!! logs/

但是,当我运行时:

git check-ignore -v logs/

我得到空输出,这似乎表明没有忽略它。

我什么都没有上演:

$ git status --untracked-files=no
On branch master
nothing to commit (use -u to show untracked files)

那么为什么这个文件夹被忽略了呢?

$ git --version
git version 2.10.2

最佳答案

当忽略是由于忽略目录内的文件而不是目录本身时,就会发生这种情况。我创建了一个 logs/ 目录并在里面放了一些东西,得到了和你一样的结果:

$ git status -s --ignored logs
!! logs/

这是我放入logs中的内容:

$ ls -A logs
foo

这就是它被忽略的原因:

$ grep foo .gitignore
foo

但是这里 git check-ignore -v 没有提到 logs/foo:

$ git check-ignore -v logs/

为什么

一旦目录为“空”(因为其中的所有文件都被忽略),Git 就不再对其感兴趣,因为 Git 不会在提交中记录目录。但在这种情况下,被忽略的不是目录本身;而是这是来自 git status 的总结,限制了您只能在此处查看目录。

因此,当您问 Git“为什么 logs/ 被忽略”时,答案是,某种程度上,它没有被忽略,它只是内容 被忽略。 (我想我们可以说这是 git check-ignore 中的错误。)

如何查看发生了什么

添加-uall(或--untracked=all)查看实际被忽略的文件:

$ git status -s --ignored -uall logs
!! logs/foo
$ git check-ignore -v logs/foo
.gitignore:34:logs/foo logs/foo

现在您可以使用它们的(现在不再汇总)路径找出文件被忽略的原因。

(注意:我可能在剪切和粘贴过程中多次更改了上面的 .gitignore 内容,我是零碎地做的:在不同的时间我有 logs/foo.gitignore 中的 foo,两者都使目录“变为空”。因此重复实验可能会给出略有不同的输出。尽管如此,关键是使用 -uall 查找文件名。)

关于git check-ignore 输出为空但仍然被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40763820/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com