Git global ignore не работает


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

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

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

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

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

10 51

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, где он к счастью стало видно:

enter image description here

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