我添加了一个模式,在.git目录中的.info里面的exclude文件中递归地忽略文件。
patter : httpdocs/**/bak_*.*
如果我从httpdocs提交它正在工作,并且从更改的目录中它会给出错误。
git commit -m "formatting js" httpdocs/* [working]
git commit -m "formatting js" httpdocs/dir1/dir2/* [giving below error]
错误: pathspec'httpdocs / dir1 / dir2 / bak_admin.abc.php'与git已知的任何文件都不匹配。
基本上我想知道为什么会这样。
答案 0 :(得分:2)
*
通配符模式由shell扩展(不是通过git )。
这意味着git commit -m "formatting js" httpdocs/*
由
git commit -m "formatting js" httpdocs/fileorDir1
git commit -m "formatting js" httpdocs/fileorDir2
git commit -m "formatting js" httpdocs/fileorDir3
如果已经跟踪了所有这些文件,git commit就可以了。如果不是,则返回您看到的错误消息。
如果是git commit -m "formatting js" httpdocs/dir1/dir2/*
,则翻译为:
git commit -m "formatting js" httpdocs/dir1/dir2/fileirDir1
git commit -m "formatting js" httpdocs/dir1/dir2/fileirDir2
git commit -m "formatting js" httpdocs/dir1/dir2/fileirDir3
这将包括明确忽略(根本没有跟踪)的文件,包括bak_admin.abc.php
即使正确设置了.gitignore,shell(不是git)也会将bak_admin.abc.php
传递给git commit
命令,从而产生
error: pathspec 'httpdocs/dir1/dir2/bak_admin.abc.php' did not match any file(s) known to git.
解决方案:请勿使用“*
”
git commit -m "formatting js" httpdocs/
git commit -m "formatting js" httpdocs/dir1/dir2/