Git global ignore не работает
Я создал файл .gitignore_global
и поместите его в мой каталог установки git. Когда я запускаю команду:
git config --global core.excludesfile ~/.gitignore
правила в файле ignore не применяются к моим коммитам.
когда я переименовываю файл .gitignore
и поместите его в корень моего проекта, правила применяются.
что здесь не так?
10 ответов:
может быть, вам нужно сделать:
git config --global core.excludesfile ~/.gitignore_global
и выпить кофе.
думал, что я скинусь на это. Существует еще одна причина, по которой файл global ignore не работает. Это то, что я не думаю, что было рассмотрено в более ранних ответах. Это так ослепительно очевидно, что...конечно - это очень легко пропустить.
это, что Git будет игнорировать новые файлы. Если файл уже отслеживается git, то, конечно, git не будет игнорировать его! Так что шаблоны
gitignore
или не применяются.это имеет смысл. Почему git хочет игнорировать изменения в файлах, которые он уже отслеживает? Если файл должен быть проигнорирован, вы должны сначала сказать git не отслеживать его, а затем git игнорировать его, как описано в руководстве. Для получения информации о том, как отслеживать файлы посмотреть этот ответ.
все это заставляет меня спросить, Можно ли игнорировать изменения в отслеживаемых файлах? Опять же, git поставляет. Это ответ;Git: игнорировать отслеживается файлы дает нам команду:
git update-index --assume-unchanged file
наконец, вот некоторые дополнительные сведения об отладке git ignore.
The 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
я обнаружил, что, когда я определил его так:
git config --global core.excludesfile $HOME/.config/git/ignore
это не сработало. Измените его, чтобы не использовать переменную $HOME, например:
git config --global core.excludesfile ~/.config/git/ignore
он сразу же начал работать. Надеюсь, это поможет кому-то еще.
FYI:
$ git --version git version 1.7.10.2 (Apple Git-33)
внимание:git1.7.12 (август 2012 года):
значение:
core.attributesfile
по умолчанию $HOME/.config/git / attributes иcore.excludesfile
по умолчанию$HOME/.config/git/ignore
соответственно, когда эти файлы существуют.так что если вы создаете
$HOME/.config/git/attributes
файл, вам даже не нужно устанавливать свойcore.excludesfile
настройка.
файл должен быть в вашем домашнем каталоге. На Windows, это обычно означает: C:\documents и settings[пользователь].
на linux это: / home / [пользователь]
У меня была эта проблема, потому что я изначально называл 'git config core.excludefiles ' без --global и с неправильным значением, и, следовательно, он хранил свойство локально. Похоже, локальное свойство скрывало глобальное (которое имело правильное значение), полностью игнорируя его.
еще одна трудная для отслеживания причина .гитюдного(_global), кажется, не работает, может быть ведущие пробелы в строках. Файл не прощает для ведущих пробелов. Поэтому убедитесь, что в каждой строке вашего файла нет ни одной, если это не пустая строка. Мне потребовалось некоторое время, чтобы выяснить.
просто добавляю свои два цента.
недавно я допустил ошибку и выполнил следующую команду
git config core.excludesfile tags
это изменило путь excludesfile к локальному файлу в текущем репозитории, и эта конфигурация была записана в локальный файл конфигурации под.git/config
, Так что исправить, что я только что открыл.git/config
файл и удалил строкуexcludesfile tags
и все возвращается в норму.
у меня была такая же проблема (на Windows). Я закончил тем, что проверил мой и обнаружил, что мой
excludesfile
было установлено:excludesfile = C:\Users\myUserName\Documents\gitignore_global.txt
но это должно было быть:
excludesfile = C:\Users\myUserName\.gitignore_global
после того, как я изменил его, все работало так, как должно.
еще одна причина, по которой глобальный git ignore может не работать: невидимые символы в пути.
Я только узнал, что это была моя проблема при вставке предупреждающего сообщения от git-check-ignore в адресную строку Chrome, где он к счастью стало видно:
(Он не был виден на терминале. И это могло быть долго кроличья нора отладки...)