Я добавил шаблон для рекурсивного игнорирования файлов в файле исключений внутри .info в каталоге .git.
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.
В основном я хочу знать, почему это происходит.
*
шаблон подстановки раскрывается оболочкой (не мерзавцем).
Это означает 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 установлен правильно, оболочка (не 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/
Других решений пока нет …