git add .
и git add dir/.dot
отлично работают для меня с неукрашенными версиями Git 1.6.6.1 и 1.7.0, которые у меня сейчас под рукой.
% git --version
git version 1.6.6.1
% git ls-files -o
.baz/baz
.foo
bar/.bar
quuux/quuux
quux
% git add .
% git ls-files -o
% git ls-files
.baz/baz
.foo
bar/.bar
quuux/quuux
quux
Какую версию Git вы используете? Ваши поддиректории на самом деле являются подмодулями (которые управляются независимо)?
«точечные файлы» не исключаются по умолчанию, но, возможно, некоторые настройки в вашей системе, репозитории или рабочем дереве настроены таким образом. Если они появляются в git ls-files --exclude-standard -oi
, то их игнорируют, и «!. *» - верный способ «игнорировать» их. Но чтобы быть эффективным, этот шаблон должен быть в правильном месте. Игнорирование обрабатывается в следующем порядке:
- .gitignore непосредственно содержащей директории, затем
- .gitignore родительского каталога (каждый родитель, вплоть до корня хранилища), затем
- $ GIT_DIR / info / exclude , затем
- файл сообщает
git config core.excludesfile
(который может быть установлен
- $ GIT_DIR / конфигурации
- $ HOME / .gitconfig или
- системный конфигурационный файл (попробуйте
GIT_EDITOR=echo git config --system --edit
, чтобы получить его путь)).
Когда путь соответствует шаблону в одном файле, последующие файлы не рассматриваются. Последнее совпадение в каждом файле «выигрывает». Шаблон в $ GIT_DIR / info / exclude никогда не сможет переопределить шаблон в файле .gitignore . Итак, если файлы игнорируются (по git ls-files --exclude-standard -oi
) и если "!. *" В $ GIT_DIR / info / exclude неэффективен, то проверьте все применимые файлы .gitignore
для виновника.