我添加了一个模式,可以递归地忽略.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]
错误:路径规范'httpdocs/dir1/dir2/bak_admin.abc.php'与git已知的任何文件都不匹配。
基本上我想知道为什么会发生这种事。
*
通配符模式由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/