Я создал файл .gitignore_global
и поместил его в каталог установки git. Когда я запускаю команду:
git config --global core.excludesfile ~/.gitignore
правила в файле игнорирования не применяются к моим коммитам.
Когда я переименовываю файл .gitignore
и помещаю его в корень своего проекта, правила применяются.
Что здесь не так?
Ответы:
Может быть нужно сделать:
И выпить кофе.
источник
gitignore
файл работает только для неотслеживаемых файлов, а не для тех, которые были добавлены ранееДумал, что скинусь на этом. Есть еще одна причина, по которой глобальный файл игнорирования не работает. Я не думаю, что это освещалось в предыдущих ответах. Это настолько ослепительно очевидно, что - конечно , очень легко пропустить.
Дело в том, что git будет игнорировать только новые файлы . Если файл уже отслеживается git, то, конечно, git его не проигнорирует! Поэтому любые шаблоны в любом
gitignore
илиexclude
файле не применяются .В этом есть смысл. Почему git хочет игнорировать изменения в файлах, которые он уже отслеживает? Если файл должен быть проигнорирован, вы должны сначала сказать git, чтобы он не отслеживал его, а затем git игнорировать его, как описано в руководстве. Для получения информации о том, как отследить файлы, см. Этот ответ .
Все это заставляет меня задаться вопросом, можно ли игнорировать изменения в отслеживаемых файлах? Опять же, git доставляет. Этот ответ; Git: Игнорировать отслеживаемые файлы дает нам команду (заменить
file
на файл, который вы хотите игнорировать):git update-index --assume-unchanged file
Наконец, вот дополнительная информация об отладке git ignore.
Страница руководства gitignore (5) сообщает нам:
Итак, это новое и заменяет предыдущее,
~/.gitignore_global
упомянутое ранее.Далее, и это действительно полезно, так это то, что с версии 1.8.2 у нас теперь есть отличные инструменты для отладки. Посмотри на:
Git учится лучше игнорировать - новое в версии 1.8.2
Это показывает, как использовать новый
check-ignore
флаг, чтобы убедиться, что git успешно игнорирует ваши шаблоны, напримерgit check-ignore bin/a.dll --verbose
источник
git update-index --assume-unchanged file
было именно то, что я искал, спасибо!Я обнаружил, что когда определил вот
global core.excludesfile
так:это не сработало. Измените его так, чтобы
$HOME
переменная не использовалась , например:он сразу заработал. Надеюсь, это поможет кому-то другому.
К вашему сведению:
источник
Примечание: начиная с git1.7.12 (август 2012 г.) :
Поэтому, если вы создаете
$HOME/.config/git/attributes
файл, вам даже не нужно устанавливатьcore.excludesfile
настройки.источник
Файл должен находиться в вашем домашнем каталоге. В Windows это обычно означает: C: \ documents and settings \ [пользователь].
В Linux это: / home / [пользователь]
источник
У меня была эта проблема, потому что я изначально называл git config core.excludefiles без --global и с неправильным значением, и, следовательно, он сохранил свойство локально. Похоже, что локальное свойство скрыло глобальное (которое имело правильное значение), полностью игнорируя его.
источник
Другая причина, по которой глобальное игнорирование git может не работать: невидимые символы в пути.
Я узнал, что это была моя проблема, когда вставлял предупреждающее сообщение от git-check-ignore в адресную строку Chrome, где, к счастью, оно стало видимым:
(На терминале этого не было видно. И это могла быть длинная кроличья нора отладки ... 😅)
источник
У меня была такая же проблема (в Windows). В итоге я проверил свой
~/.gitconfig
файл и обнаружил, что для меняexcludesfile
установлено значение:но это должно было быть:
После того, как поменял, все заработало как надо.
источник
Еще у меня была забавная вещь с кодировкой этого файла. Каким-то образом моя Windows 10 (с Powershell) создала файл с кодировкой «UTF-16 LE», и каким-то образом Git не смог с этим справиться. Когда я меняю кодировку на гораздо более разумное значение буквально чего-либо еще, это сработало.
источник
Еще одна трудная для отслеживания причина, по которой .gitignore (_global) не работает, может быть ведущими пробелами в строках. Файл не прощает ведущих пробелов. Поэтому убедитесь, что в каждой строке вашего файла нет ни одной строки, кроме пустой. Мне потребовалось время, чтобы сообразить.
Просто добавляю свои два цента.
источник
Недавно я совершил ошибку и запустил следующую команду, которая
git config core.excludesfile tags
изменила путь excludesfile к локальному файлу в текущем репозитории, и эта конфигурация была записана в локальный файл конфигурации ниже.git/config
, поэтому, чтобы исправить это, я просто открыл.git/config
файл и удалил строкуexcludesfile tags
и все вернулось в норму.источник