Git Global игнорировать не работает - PullRequest
66 голосов
/ 23 сентября 2011

Я создал файл .gitignore_global и поместил его в мой каталог git install.Когда я запускаю команду:

git config --global core.excludesfile ~/.gitignore

правила в файле игнорирования не применяются к моим коммитам.

Когда я переименовываю файл .gitignore и помещаю его в корень моего проекта, правила действительно применяются.

Что здесь не так?

Ответы [ 11 ]

142 голосов
/ 23 сентября 2011

Может быть, вам нужно сделать:

git config --global core.excludesfile ~/.gitignore_global 

И выпить кофе.

64 голосов
/ 03 апреля 2014

Думал, что скину на это.Есть еще одна причина, по которой глобальный файл игнорирования, похоже, не работает.Я не думаю, что это было описано в предыдущих ответах.Это настолько ослепительно очевидно, что - конечно - очень легко пропустить.

Дело в том, что git будет игнорировать только новые файлы .Если файл уже отслеживается Git, то, конечно, Git не будет игнорировать его!Поэтому любые шаблоны в любом gitignore или exclude файле не применяются .

Это имеет смысл.Почему git хочет игнорировать изменения в файлах, которые он уже отслеживает?Если файл нужно игнорировать, вы должны сначала сказать git не отслеживать его, а затем git игнорировать его, как описано в руководстве.Информацию о том, как отследить файлы, см. В этом ответе .

Все это заставляет меня спросить, можно ли игнорировать изменения в отслеживаемых файлах?Опять мерзавец доставляет.Этот ответ; Git: игнорировать отслеживаемые файлы дает нам команду (замените file файлом, который вы хотите игнорировать):

git update-index --assume-unchanged file

Наконец, вот дополнительная информацияпри отладке git ignore.

Страница руководства gitignore (5) сообщает нам:

Шаблоны, которые пользователь хочет игнорировать Git во всех ситуациях (например,резервные или временные файлы, сгенерированные выбранным пользователем редактором), обычно помещаются в файл, указанный в core.excludefile в ~ / .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

10 голосов
/ 30 января 2013

Я обнаружил, что когда я определил global core.excludesfile следующим образом:

git config --global core.excludesfile $HOME/.config/git/ignore

, это не сработало.Изменив его, чтобы он не использовал переменную $HOME, например:

git config --global core.excludesfile ~/.config/git/ignore

, он сразу начал работать.Надеюсь, это поможет кому-то еще.

К вашему сведению:

$ git --version
git version 1.7.10.2 (Apple Git-33)
6 голосов
/ 31 июля 2012

Примечание: начиная с git1.7.12 (август 2012 г.) :

Значение:

  • core.attributesfile по умолчанию равно $ HOME /.config / git / attribute и
  • core.excludesfile по умолчанию равны $HOME/.config/git/ignore соответственно, когда эти файлы существуют.

Поэтому, если вы создаете файл $HOME/.config/git/attributes, выдаже не нужно устанавливать настройки core.excludesfile.

3 голосов
/ 11 марта 2012

Файл должен находиться в вашем домашнем каталоге. На окнах это обычно означает: C: \ документы и настройки \ [пользователь].

В Linux это: / Главная / [пользователь]

2 голосов
/ 24 августа 2015

У меня была эта проблема, потому что я первоначально назвал 'git config core.excludefiles' без --global и с неправильным значением, и, следовательно, он хранил свойство локально. Похоже, локальное свойство скрыло глобальное (которое имело правильное значение), полностью игнорируя его.

1 голос
/ 01 марта 2018

Другая причина, по которой глобальное игнорирование git может не работать: невидимые символы в пути.

Я только узнал, что это была моя проблема при вставке предупреждения от git-check-ignore в адресную строку Chrome, где она к счастью стала видимой:

enter image description here

(не было видно на терминалеИ это могла быть длинная кроличья нора отладки ... ?)

1 голос
/ 28 августа 2017

У меня была такая же проблема (на Windows). В итоге я проверил файл ~/.gitconfig и обнаружил, что для моего excludesfile установлено значение:

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt

но это должно было быть:

excludesfile = C:\\Users\\myUserName\\.gitignore_global

После того, как я его изменил, все заработало как надо.

0 голосов
/ 05 апреля 2019

Также у меня была забавная вещь с кодировкой этого файла.Каким-то образом моя Windows 10 (с Powershell) создала файл с кодировкой «UTF-16 LE», и Git почему-то не смог с этим справиться.Когда я изменяю кодировку на гораздо более разумное значение буквально всего остального, это сработало.

0 голосов
/ 02 августа 2016

Я недавно сделал ошибку и запустил следующую команду git config core.excludesfile tags это изменило путь к файлу excludefile к локальному файлу в текущем репозитории, и этот конфиг был записан в локальный файл конфигурации в .git/config, чтобы исправить это, я просто открыл файл .git/config и удалил строку excludesfile tags и все возвращается в норму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...