我在说服git忽略项目中的文件时遇到了很多麻烦。
基本上,有时它可以工作,有时只是似乎忽略.gitignore文件没有明显的原因。 (“似乎”我的意思是说它中有些模式看起来好像应该排除某些东西,但不排除某些东西。)
有一个'git check-ignore'命令,但它只说明哪个模式与文件匹配。但是我找不到任何选项来说明它找到了哪些模式以及它们在哪里,以及为什么这些模式不匹配文件。
有没有办法进行这种调试?
P.S。我确实找到了一个问题,我在这里提到它以防其他人:
我使用“echo pattern >> .gitignore
”添加模式,至少在我的系统上会产生空格(即“echo
”和“>>
”之间的所有内容在文件中回显,除了“echo”之后的第一个空格字符。
Git在匹配模式时不修剪这些空格,因此对于上面的命令,它与名为“pattern
”的文件不匹配,但它匹配“pattern{space}
”
我认为我的大多数问题源于此。那些额外的空间很难被注意到,所以我仍然喜欢一个调试命令,确保我注意到它们,如果有的话。
编辑#1:
是的,我确实试过-v
。例如:
> mkdir test
> touch test/file.txt
> echo test >> .gitignore
> git check-ignore -v test/file.txt
(没有打印)
> echo test>> .gitignore
> git check-ignore -v test/cuc.txt
.gitignore:8:test test/cuc.txt
注意第一个echo
行中的额外空格,这使得它作为模式输入“test [space]”。正如我所提到的,“check-ignore”告诉你匹配的是什么,但它并没有告诉你什么没有,为什么。