Глобальное игнорирование Git

Я хочу настроить Git на глобальное игнорирование определенных файлов.

Я добавил .gitignore файл в свой домашний каталог (/Users/me/) и добавил в него следующую строку:

*.tmproj

Но он не игнорирует этот тип файлов, понимаете, что я делаю не так?


person Mild Fuzz    schedule 07.09.2011    source источник
comment
Вы также можете ознакомиться с предложениями игнорирования GitHub - help.github.com/articles/ignoring- файлы; у них есть репозиторий общих шаблонов игнорирования   -  person drzaus    schedule 14.01.2014
comment
Вы также можете подумать об использовании .gitignore внутри отдельных проектов. В противном случае, если вы (или кто-то другой) клонируете проект в новой системе, вам также придется каждый раз воссоздавать глобальный файл excludes и конфигурацию.   -  person Stan Kurdziel    schedule 01.05.2014
comment
Я полностью согласен с @StanKurdziel. Я не могу придумать вескую причину для использования глобального файла .gitignore. Возможно, если у вас есть проект с людьми, использующими огромное количество редакторов и IDE, вы могли не захотеть загромождать .gitignore проекта всевозможными вещами, адаптированными для каждой IDE. .. но, честно говоря, я бы жил с беспорядком.   -  person DanielSank    schedule 06.03.2016
comment
Игнорируемые файлы, которые создает проект, должны находиться в файле проекта .gitignore, игнорируемые файлы, которые создаются на вашем компьютере, должны помещаться в глобальный .gitignore (например, временные файлы редактора / IDE и т.п.).   -  person Pylinux    schedule 22.04.2016
comment
Каталоги виртуальной среды Python являются обычным вариантом использования записей в моем глобальном или локальном файле excludesfile.   -  person Stew    schedule 26.05.2016
comment
@Pylinux На самом деле, согласно git-scm, личная среда IDE и специфичные для рабочего процесса вещи могут оставаться неотслеживаемыми файл .git/info/exclude в репо, поэтому он не обязательно должен находиться в глобальном файле. Кроме того, глобальным файлом gitignore по умолчанию является $HOME/.config/git/ignore.   -  person Acumenus    schedule 04.10.2016
comment
см. видео здесь youtu.be/3LYBdd3RGKs   -  person Shailesh Ladumor    schedule 31.01.2021


Ответы (12)


Вам необходимо настроить глобальный файл конфигурации core.excludesfile так, чтобы он указывал на этот глобальный файл игнорирования.

e.g.

* nix или Windows git bash:

git config --global core.excludesFile '~/.gitignore'

Windows cmd:

git config --global core.excludesFile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesFile "$Env:USERPROFILE\.gitignore"

Для Windows это расположение C:\Users\{myusername}\.gitignore. Вы можете проверить правильность значения конфигурации, выполнив:

git config --global core.excludesFile

В результате должен получиться расширенный путь к .gitignore вашего профиля пользователя. Убедитесь, что значение не содержит нерасширенной строки %USERPROFILE%.

Важно. Приведенные выше команды устанавливают только местоположение файла игнорирования, который будет использовать git. Файл должен быть создан вручную в этом месте и заполнен списком игнорирования. (из комментария muruge)

Вы можете прочитать о команде на странице https://help.github.com/articles/ignoring-files/#create-a-global-gitignore.

person CB Bailey    schedule 07.09.2011
comment
Я сделал это, затем rm отредактировал * .tmproj, повторно сохранил файл, и он по-прежнему отображается как неотслеживаемое изменение. - person Mild Fuzz; 07.09.2011
comment
@MildFuzz: Вы имеете в виду, что он отображается в git status под Untracked files:? Этого не должно происходить, я только что провел быстрый тест в своей системе, и она работает, как и ожидалось. - person CB Bailey; 07.09.2011
comment
Будет ли это потому, что файл отслеживался в прошлом? - person Mild Fuzz; 07.09.2011
comment
Пока он не находится в вашем HEAD или вашем индексе, не должно иметь никакого значения, отслеживался ли файл когда-то или нет. Может оказаться полезным, если вы добавите результат git status, git config core.excludesfile в свой вопрос. - person CB Bailey; 07.09.2011
comment
Поскольку существует несколько уровней конфигурации (системный, глобальный, локальный), вам следует проверить свой эффективный файл core.excludesfile. Тип 1_. Вы можете обнаружить, что это относится к чему-то вроде $HOME/.gitignore_global. - person Wil Moore III; 14.05.2012
comment
Могу ли я использовать # в начале строк внутри ~/.gitignore для добавления комментариев в глобальный файл игнорирования? - person Dror; 14.05.2013
comment
В последних версиях официального набора инструментов Git Windows вместо этого используется синтаксис * nix; если эта строка не работает, попробуйте вместо нее * nix. - person Andy Jones; 05.12.2013
comment
@Dror да, вы можете использовать # для комментариев - см. help.github.com/articles/ignoring- файлы - person drzaus; 14.01.2014
comment
Мне не удалось заставить это работать с помощью переменной %USERPROFILE%. Мне пришлось ввести полный путь к файлу, используя разделители каталогов * nix. например core.excludesfile C: /Users/User/.gitignore - person Vince; 22.02.2014
comment
Вы также можете попробовать %HOME% вместо %USERPROFILE%. - person Steve Crockett; 07.04.2014
comment
Не удалось заставить его работать с переменной% USERPROFILE%. Мне пришлось использовать git config --global core.excludesfile '~ / .gitignore' в Windows, чтобы установить его в расположение C: / users / {myusername} /. Gitignore. Кроме того, указанная выше команда установит только местоположение файла игнорирования, который будет использовать git. Файл должен быть создан вручную в этом месте и заполнен списком игнорирования. - person muruge; 04.06.2014
comment
Примечание. Это работает в CMD в моей Windows 7, но НЕ работает в PowerShell. - person Joe; 16.06.2014
comment
Да, следует отметить, что если вы запускаете это из git bash в Windows, вам также следует использовать ~/.gitignore. %USERPROFILE% var будет работать в cmd. - person mystrdat; 27.06.2014
comment
Помните, что если вы примените это изменение постфактум, вам нужно будет очистить кеш репо для изменения. вступить в силу. - person Jujhar Singh; 01.08.2014
comment
Котировки на самом деле не требуются, вы можете просто пойти git config --global core.excludesfile ~/.gitignore. По крайней мере, на Git 1.9.4. - person Ain Tohvri; 12.09.2014
comment
в моем случае% USERPROFILE% не работал. Пробовал с кавычками и без. Я думаю, что это часть имени файла. Я закончил тем, что поменял местами фактическое местоположение за псевдонимом, и это сработало. - person Sonic Soul; 07.04.2015
comment
Привет @CharlesBailey, спасибо за ответ. Я давно установил свой глобальный gitignore, и сегодня у меня противоположная проблема: могу ли я игнорировать свой глобальный gitignore :). У меня есть одно репо, в которое мне нужно отправить .exe файл. Я не хочу менять свою глобальную конфигурацию только для одного репо. Какие-нибудь советы? Спасибо. - person DrBeco; 07.06.2016
comment
Ой, извините за беспокойство! Я только что заставил его работать с командой git config --local core.excludesfile "". В любом случае спасибо, отличный ответ. Если он вам понравился, вы можете добавить к нему это дополнение. Может быть полезно. Увидимся. - person DrBeco; 07.06.2016
comment
В Windows будьте осторожны с кавычками, когда копируете пример выше. Убедитесь, что в вашей команде используются обычные кавычки. Я скопировал пример, и он дал мне специальные символы кавычек, которые, по мнению git, были частью моего пути, из-за чего он не работал. - person Adam Lane; 14.11.2018
comment
Могу ли я отрицать глобальный .gitignore, например, если у меня /src/ в глобальном игнорировании? Но для одного-единственного проекта я хочу, чтобы !/src/ это сработало? - person redanimalwar; 02.02.2021
comment
~/.gitignore также работает на WSL (подсистема Windows для Linux) - person isaias-b; 10.02.2021

Перед перенастройкой глобального файла исключений вы можете проверить, на что он в настоящее время настроен, используя эту команду:

git config --get core.excludesfile

In my case, when I ran it I saw my global excludes file was configured to

~/.gitignore_global
and there were already a couple things listed there. So in the case of the given question, it might make sense to first check for an existing excludes file, and add the new file mask to it.

person Lawrence    schedule 27.05.2013

Хотя другие ответы верны, они устанавливают значение глобальной конфигурации, тогда как для глобального файла игнорирования git существует местоположение по умолчанию:

* nix:

~/.config/git/ignore

Окна:

%USERPROFILE%\git\ignore

Возможно, вам потребуется создать каталог git и файл ignore, но затем вы можете поместить свои глобальные игнорирования в этот файл, и все!

Источник

В какой файл поместить узор, зависит от того, как он будет использоваться.

  • Шаблоны, которые пользователь хочет, чтобы Git игнорировал во всех ситуациях (например, резервные или временные файлы, созданные выбранным пользователем редактором), обычно попадают в файл, указанный core.excludesFile в ~/.gitconfig пользователя. Его значение по умолчанию - $ XDG_CONFIG_HOME / git / ignore. Если $ XDG_CONFIG_HOME либо не установлен, либо пуст, вместо него используется $ HOME / .config / git / ignore.
person Steve Jorgensen    schedule 05.04.2014
comment
Отлично; Я не знал об этом ... но разве это не сгенерированный файл? Можно ли его перезаписать при обновлении / переустановке? - person danielsdesk; 11.11.2015
comment
Я считаю, что файл создается / изменяется путем выполнения определенных git команд. Поскольку это файл настроек в каталоге каждого пользователя, я не думаю, что его когда-либо следует перезаписывать. - person Steve Jorgensen; 04.01.2016
comment
Я согласен, что это должен быть принятый ответ, однако я не нашел его в -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ справочной статье (help.github.com/articles/ignoring-files) - person AVProgrammer; 04.11.2016
comment
@AVProgrammer Я только что отредактировал ответ, чтобы отразить изменение в организации исходного документа. - person Steve Jorgensen; 04.11.2016
comment
@Cas у вас есть источник пути Windows? У меня не работает. - person suriv; 16.01.2017
comment
Похоже, в Windows путь тоже ~/.config/git/ignore. - person suriv; 16.01.2017
comment
Нужно ли мне после этого запускать git config --global core.excludesfile? - person henrique; 17.04.2019
comment
В macOS по умолчанию это не работает. Как указано в документации git: $XDG_CONFIG_HOME/git/ignore, $GIT_DIR/info/exclude, .gitignore анализируются, но $XDG_CONFIG_HOME не установлен по умолчанию в macOS. Таким образом, если git config --get core.excludesfile не выводит папку, значит, это не сработало, и вам придется вручную установить git config --global core.excludesfile ~/.config/git/ignore или любое другое удобное для вас место. - person iolsmit; 08.07.2019
comment
Использование этого файла игнорирования по умолчанию удобно в Windows, потому что он будет использоваться как Git для Windows, так и Git, который поставляется с Cygwin. - person Brian Vosburgh; 09.07.2019
comment
Для меня core.excludesFile был не установлен на какое-либо значение по умолчанию. (Я проверил, прежде чем вносить какие-либо изменения, и этот параметр не имел значения) Таким образом, пользователям все равно может потребоваться установить параметр core.excludesFile, даже если используются перечисленные пути. - person Venryx; 16.10.2019
comment
по умолчанию работает в macOS git version 2.21.1 (Apple Git-122.3). - person Peter; 30.01.2020
comment
Это, безусловно, лучший ответ, есть ли способ отменить принятый? Многие люди в конечном итоге сделают свою жизнь более сложной, чем нужно, если они последуют другим ответам ... - person Sam Salisbury; 05.02.2020

Чтобы создать глобальный gitignore с нуля:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. Первая строка меняет каталог на C:/Users/User
  2. После этого вы создаете пустой файл с расширением .gitignore_global
  3. И, наконец, установка глобального игнорирования для этого файла.
  4. Затем откройте его каким-нибудь блокнотом и добавьте необходимые правила игнорирования.
person Phoera    schedule 19.08.2015

  1. Создайте файл .gitignore в своем домашнем каталоге
touch ~/.gitignore
  1. Добавить в него файлы / папки

Пример

# Files
*.gz
*.tmproj
*.7z

# Folders
.vscode/
build/

# If folders don't work, you can still do this
.vscode/*
build/*
  1. Проверьте, есть ли у git уже глобальный gitignore
git config --get core.excludesfile
  1. Сообщите git, где находится файл
git config --global core.excludesfile '~/.gitignore'

Вуаля !!

person Prerak Mann    schedule 01.04.2019

Из здесь.

Если вы создадите в своем репо файл с именем .gitignore, git будет использовать свои правила при просмотре файлов для фиксации. Обратите внимание, что git не будет игнорировать файл, который уже отслеживался до того, как в этот файл было добавлено правило, чтобы игнорировать его. В таком случае файл не должен отслеживаться, обычно с помощью:

git rm --cached filename

Это твой случай?

person LaGrandMere    schedule 07.09.2011
comment
Я пытаюсь игнорировать глобально, чего не происходит !! - person Mild Fuzz; 07.09.2011
comment
@MildFuzz в Linux кажется, что core.excludesfile файл интерпретируется иначе, чем .gitignore файл. Если вы хотите игнорировать весь каталог, просто введите имя каталога, например .vscode/ вместо .vscode/* - person Aspiring Dev; 20.04.2020

Если вы используете систему Unix, вы можете решить свою проблему двумя командами. Где первый инициализирует конфиги, а второй изменяет файл с файлом, который нужно игнорировать.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
person Purkhalo Alex    schedule 21.06.2019

Помните, что запуск команды

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

просто настроит глобальный файл, но НЕ создаст его. В Windows проверьте папку «Пользователи» на наличие файла .gitconfig и отредактируйте его по своему усмотрению. В моем случае это так:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
person mouse m.d.    schedule 30.01.2015

Я могу игнорировать .tmproj файл, включив .tmproj или *.tmproj в мой /users/me/.gitignore-global файл.

Обратите внимание, что имя файла - .gitignore-global, а не .gitignore. Не удалось включить .tmproj или *.tmproj в файл с именем .gitignore в каталоге /users/me.

person Sri Sankaran    schedule 08.09.2011
comment
Не имеет значения, как вы называете свой глобальный файл игнорирования, если он соответствует вашей core.excludesfile конфигурации. - person CB Bailey; 08.09.2011
comment
Ах! Хороший вопрос @CharlesBailey. Однако это может быть то, что автор может захотеть проверить. Причина, по которой файл .tmproj не игнорируется, может заключаться в том, что пользователь excludesfile не является .gitignore. - person Sri Sankaran; 08.09.2011
comment
Я думаю, он думал, что пользователь будет достаточно умен, чтобы это понять. - person WORMSS; 22.03.2014
comment
У меня должно быть больше голосов, у меня была такая же проблема с моим git, который не переконфигурировал .gitignore глобально, просто потому, что его имя тоже было .gitignore ... Поэтому я решил изменить его на .gitignore_global и изменить core.excludesfile, чтобы он указывал на этот новый файл, и он работал как шарм! - person DarkteK; 01.11.2020

Для этого вы должны создать файл исключения. Ознакомьтесь с этой сутью, которая не требует пояснений.

Однако, чтобы ответить на ваш вопрос, вам может потребоваться либо деиндексировать .tmproj файл (если вы уже добавили его в индекс) с помощью git rm --cached path/to/.tmproj, либо git add и commit ваш .gitignore файл.

person Nic    schedule 07.09.2011
comment
Я пытаюсь сделать это глобально, а не только по репо - person Mild Fuzz; 07.09.2011
comment
Да, это то, на что я ссылался в сущности. Меня немного смутил первоначальный вопрос. Вы сделали git rm --cached? - person Nic; 07.09.2011
comment
да, пробовал. Мне кажется, я последовал всем рекомендованным советам! Что мне не хватает? - person Mild Fuzz; 07.09.2011
comment
Как было предложено, я бы добавил ваш статус git и исключил информацию из вопроса :) - person Nic; 07.09.2011

в подсистеме Windows для Linux мне пришлось перейти к корню подсистемы с помощью cd ~/, затем touch .gitignore, а затем обновить там глобальную конфигурацию gitignore.

Надеюсь, это кому-то поможет.

person bboydflo    schedule 04.07.2018

Если вы используете VSCODE, вы можете получить это расширение, которое справится с этой задачей за вас. Он отслеживает ваше рабочее пространство каждый раз, когда вы сохраняете свою работу, и помогает вам автоматически игнорировать файлы и папки, указанные в настройках vscode. Json ignoreit (расширение vscode)

person marcdomain    schedule 01.05.2020