我遇到了一个问题,即git check-ignore不遵守.gitignore's'not'(!)规则。如果文件与.gitignore文件中的任何条目匹配,则返回“忽略”,而不管该条目是否告诉它不要忽略路径(通过!运算符)git check-ignore's documentation返回码映射如下:退出状态0:忽略一个或多个提供的路径。1:不忽略提供的任何路径。128:遇到致命错误。这与我添加“不要忽略”规则时看到的情况不匹配,即在条目前粘贴!。例如,我们创建一个文件结构,如下所示:.gitignorefiles/ path-not-ignoredignored-files/ path-ignored path-not-ignoreda.gitignore包含:ignored-files/*!ignored-files/path-not-ignored根据文档,我希望在cc和 >中的文件返回输出状态1(未被忽略),并返回0(忽略)。我看到的不是在files/返回退出状态0(忽略):File | Expected exit status | Actual exit status | Summary-------------------------------- | -------------------- | ------------------ | -------`files/path-not-ignored` | 1 (Not ignored) | 1 (Not ignored) | Expected`ignored-files/path-ignored` | 0 (Ignored) | 0 (Ignored) | Expected`ignored-files/path-not-ignored` | 1 (Not ignored) | 0 (Ignored) | Unexpected(退出状态代码用“cc>”检查)这与git的内部行为不匹配,因为我可以很好地:File | `git add`? | Matches `git check-ignore` output?-------------------------------- | ---------------------------- | ----------------------------------`files/path-not-ignored` | Adds file (as expected) | Yes`ignored-files/path-ignored` | Throws warning (as expected) | Yes`ignored-files/path-not-ignored` | Adds file (as expected) | Nogit statusOn branch masterInitial commitChanges to be committed: (use "git rm --cached <file>..." to unstage) new file: files/path-not-ignored new file: ignored-files/path-not-ignoredUntracked files: (use "git add <file>..." to include in what will be committed) .gitignore由于在这种情况下ignored-files/path-not-ignored是不可靠的,我是否可以使用其他命令来检查git是否忽略/不忽略给定的文件?返回退出代码的东西是理想的,就像我在BASH脚本中使用的一样。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 使用Git 2.18(2018年7月)检查问题是否自2017年7月以来一直存在。Commit d60771e可能有助于消除假阳性。check-ignore:修复目录和其他文件类型的混合在check_ignore()中,第一个pathspec项确定任何接下来的。这意味着与常规文件匹配的pathspec可以阻止以下pathspec与目录匹配,这毫无意义。 (adsbygoogle = window.adsbygoogle || []).push({}); 07-25 20:12