Заставить git добавить файлы точек в хранилище - PullRequest
28 голосов
/ 28 февраля 2010

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

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

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

Ответы [ 3 ]

28 голосов
/ 01 марта 2010

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 для виновника.

14 голосов
/ 01 марта 2010

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

git add */.*

или

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

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

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

1 голос
/ 22 марта 2017

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

...