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, где он к счастью стало видно:
(Он не был виден на терминале. И это могло быть долго кроличья нора отладки...)
