Ответ 1
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 вы используете? Являются ли ваши поддиры фактически подмодулями (которые управляются независимо)?
"dot файлы" по умолчанию не исключаются, но, возможно, некоторая конфигурация вашей системы, репозитория или рабочего дерева может быть установлена таким образом. Если они отображаются в 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
файлы для виновника.