Подтвердить что ты не робот

Force git добавить dotfiles в репозиторий

Как я могу добавить файлы, начиная с точки (скрытые файлы) в git repo? git, кажется, всегда игнорирует их.

Когда я печатаю "git add.", добавляются dotfiles в GIT_DIR, но не из подкаталогов. С другой стороны, "git добавить subdir/.dotfile" не будет работать.

Я попробовал "git add -f" и поместил "!. *" в GIT_DIR/.git/info/exclude. Не повезло.

4b9b3361

Ответ 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 файлы для виновника.

Ответ 2

Вы можете добавить их конкретно по имени пути, например,

git add */.*

или

find . -name '.[a-z]*' -exec git add '{}' ';'

(Хорошо быть осторожным с -name, потому что вы не обязательно хотите забрать каждый каталог со своей записью ..)

Но, тем не менее, самый простой способ сделать это - git gui. Просто нажмите на файлы.

Ответ 3

Интересно, что под окнами 10 с git версией 2.12.0.windows.1 работает под "Git - Bash" an "git add. *" тоже не получается. Файлы, такие как .classpath и .project и т.д., Не добавляются и, следовательно, позже не совершаются. Но хорошо, это неверный файл, чтобы записать отчет об ошибке.