Думал, что скинусь на этом. Есть еще одна причина, по которой глобальный файл игнорирования не работает. Я не думаю, что это освещалось в предыдущих ответах. Это настолько ослепительно очевидно, что - конечно , очень легко пропустить.
Дело в том, что git будет игнорировать только новые файлы . Если файл уже отслеживается git, то, конечно, git его не проигнорирует! Поэтому любые шаблоны в любом gitignore
или exclude
файле не применяются .
В этом есть смысл. Почему git хочет игнорировать изменения в файлах, которые он уже отслеживает? Если файл должен быть проигнорирован, вы должны сначала сказать git, чтобы он не отслеживал его, а затем git игнорировать его, как описано в руководстве. Для получения информации о том, как отследить файлы, см. Этот ответ .
Все это заставляет меня задаться вопросом, можно ли игнорировать изменения в отслеживаемых файлах? Опять же, git доставляет. Этот ответ; Git: Игнорировать отслеживаемые файлы дает нам команду (заменить file
на файл, который вы хотите игнорировать):
git update-index --assume-unchanged file
Наконец, вот дополнительная информация об отладке git ignore.
Страница руководства gitignore (5) сообщает нам:
Шаблоны, которые пользователь хочет, чтобы Git игнорировал во всех ситуациях (например, резервные или временные файлы, созданные выбранным пользователем редактором), обычно попадают в файл, указанный в core.excludesfile в ~ / .gitconfig пользователя. Его значение по умолчанию - $ XDG_CONFIG_HOME / git / ignore. Если $ XDG_CONFIG_HOME не установлен или пуст, вместо него используется $ HOME / .config / git / ignore.
Итак, это новое и заменяет предыдущее, ~/.gitignore_global
упомянутое ранее.
Далее, и это действительно полезно, так это то, что с версии 1.8.2 у нас теперь есть отличные инструменты для отладки. Посмотри на:
Git учится лучше игнорировать - новое в версии 1.8.2
Это показывает, как использовать новый check-ignore
флаг, чтобы убедиться, что git успешно игнорирует ваши шаблоны, например
git check-ignore bin/a.dll --verbose