Global Git игнорировать


841

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

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

*.tmproj

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


7
Вы также можете проверить предложения по игнорированию GitHub - help.github.com/articles/ignoring-files ; у них есть хранилище общих шаблонов игнорирования
drzaus

6
Вы также можете рассмотреть возможность использования .gitignore внутри отдельных проектов. В противном случае, если вы (или кто-то еще) клонируете проект в новой системе, вам также придется каждый раз заново создавать глобальный файл excludefile и конфигурацию.
Стэн Курдзил

25
Воспламеняемые файлы, создаваемые проектом, должны находиться в файле проекта .gitignore, игнорируемые файлы, создаваемые на вашем компьютере, должны помещаться в глобальный .gitignore (например, временные файлы редактора / IDE и т. П.).
Pylinux

2
Каталоги виртуальной среды Python - это общий случай использования записей в моем глобальном или локальном файле excludefile.
Тушеное мясо

10
@Pylinux На самом деле, для каждого git-scm личная среда разработки и специфические рабочие процессы могут помещаться в неотслеживаемый файл .git/info/excludeв репозитории , поэтому это не обязательно должно входить в глобальный файл. Кроме того, по умолчанию используется автоматический глобальный файл gitignore $HOME/.config/git/ignore.
Acumenus

Ответы:


1422

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

например

* 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. Файл все еще должен быть создан вручную в этом месте и заполнен списком игнорирования. (из комментария убийцы )

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


2
До тех пор, пока его нет в вашем HEADили вашем индексе, не должно иметь никакого значения, отслеживался ли файл когда-то или нет. Это может быть полезно , если вы добавите выход git status, git config core.excludesfileна ваш вопрос.
CB Bailey

2
Могу ли я использовать #в начале строки внутри, ~/.gitignoreчтобы добавить комментарии в глобальный файл игнорирования?
Дрор

9
Последние версии официального инструментария Git Windows используют вместо этого синтаксис * nix; если эта строка не работает, попробуйте вместо нее * nix.
Энди Джонс

9
Я не смог заставить это работать с помощью %USERPROFILE%переменной. Мне пришлось ввести полный путь к файлу, используя разделители каталогов * nix. например, core.excludesfile C: /Users/User/.gitignore
Винс

21
Не удалось заставить его работать с переменной% USERPROFILE%. Мне пришлось использовать git config --global core.excludesfile '~ / .gitignore' в Windows, чтобы установить его в расположение C: / users / {myusername} /. Gitignore. Также приведенная выше команда будет устанавливать только местоположение файла игнорирования, который будет использовать git. Файл все еще должен быть создан вручную в этом месте и заполнен списком игнорирования.
Убийство

301

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

git config --get core.excludesfile

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

~ / .Gitignore_global
и там уже было несколько вещей, перечисленных там. Таким образом, в случае данного вопроса, возможно, имеет смысл сначала проверить существующий исключающий файл и добавить к нему новую маску файла.


2
это прекрасно работает Настройте свой глобальный файл gitignore как обычно; одна запись в строке.
Мартен Хартман

237

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

* Никс:

~/.config/git/ignore

Окна:

%USERPROFILE%\git\ignore

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

Источник

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

...

  • Шаблоны, которые пользователь хочет игнорировать Git во всех ситуациях (например, резервные копии или временные файлы, сгенерированные выбранным редактором пользователя), обычно попадают в файл, указанный core.excludesFileпользователем ~/.gitconfig. Его значение по умолчанию - $ XDG_CONFIG_HOME / git / ignore. Если $ XDG_CONFIG_HOME либо не установлен, либо пуст, вместо него используется $ HOME / .config / git / ignore.

1
Это замечательно; Я не знал об этом ... однако это не сгенерированный файл? Может ли он быть перезаписан при обновлении / переустановке?
Даниэльсдеск

1
Я считаю, что файл создается / изменяется путем запуска определенных gitкоманд. Поскольку это файл настроек в каталоге каждого пользователя, я не думаю, что он когда-либо будет перезаписан.
Стив Йоргенсен

1
Я согласен, что это должен быть принятый ответ, однако я не нашел этого в -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ справочной статье ( help.github.com/articles/ignoring-files )
AVProgrammer

1
@AVProgrammer Я только что отредактировал ответ, чтобы отразить изменение в организации исходного документа.
Стив Йоргенсен

7
Похоже, на Windows путь тоже ~/.config/git/ignore.
Suriv

40

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

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

18

От сюда .

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

git rm --cached filename

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


Я пытаюсь игнорировать глобально, чего не происходит !!
Мягкий пух

@MildFuzz в Linux core.excludesfileфайл, похоже, интерпретируется иначе, чем .gitignoreфайл. Если вы хотите игнорировать весь каталог, просто введите имя каталога, как .vscode/вместо.vscode/*
Aspiring Dev

11

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

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore

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

пример

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

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

Вуаля !!


"папки не распознаны" - это просто неправильно, папки просто работают нормально ...
TobiX

7

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

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

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

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore

3

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

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


4
Неважно, что вы называете своим глобальным файлом игнорирования, если он соответствует вашей core.excludesfileконфигурации.
CB Bailey

Ах! Хороший вопрос @CharlesBailey. Однако автор может захотеть проверить это. Причина , по которой .tmprojфайл не получает игнорируется , может быть потому , что пользователь excludesfileне будут .gitignore.
Шри Шанкаран

Я думаю, он думал, что пользователь будет достаточно умен, чтобы понять.
WORMSS

2

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

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


Я пытаюсь сделать это глобально, а не только для репо
Mild Fuzz

Да, это то, с чем я связан в сущности. Я был немного смущен оригинальным вопросом. Ты сделал git rm --cached?
Nic

да, попробовал это. Мне кажется, я следовал всем рекомендуемым советам! Что мне не хватает?
Мягкий пух

Как и предполагалось, я бы добавил ваш git-статус и исключил информацию к вопросу :)
Nic

2

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

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.