Global Git ігнорує


841

Я хочу налаштувати Git так, щоб глобально ігнорувати певні файли.

Я додав .gitignoreфайл у свій домашній каталог ( /Users/me/) і до нього додав наступний рядок:

*.tmproj

Але це не ігнорування файлів такого типу, будь-яке уявлення про те, що я роблю неправильно?


7
Ви також можете перевірити пропозиції ігнорування GitHub - help.github.com/articles/ignoring-files ; у них є сховище загальних ігноруючих зразків
drzaus

6
Ви також можете розглянути можливість просто використовувати .gitignore в окремих проектах. Інакше, якщо ви (або хтось інший) клонуєте проект у новій системі, вам також доведеться кожного разу відтворювати глобальний файл виключення та конфігурацію.
Stan Kurdziel

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

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

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

Відповіді:


1421

Вам потрібно налаштувати свій глобальний core.excludesfile файл конфігурації, щоб вказати на цей глобальний файл ігнорування.

напр

* nix або Windows git bash:

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

Cmd для Windows:

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


2
Поки він не знаходиться у вашому HEADіндексі чи вашому індексі, він не повинен мати різниці, відстежувався файл чи ні. Це може бути корисно , якщо ви додасте вихід git status, git config core.excludesfileна ваше запитання.
CB Bailey

2
Чи можу я використовувати #на початку рядків всередині, ~/.gitignoreщоб додати коментарі до глобального файлу ігнорування?
Dror

9
Останні версії офіційного інструментарію Git Windows замість цього використовують синтаксис * nix; якщо цей рядок не працює, спробуйте замість нього * nix.
Енді Джонс

9
Мені не вдалося змусити це працювати за допомогою %USERPROFILE%змінної. Мені довелося ввести повний шлях до файлу, використовуючи роздільники каталогу nix. наприклад core.excludesfile C: /Users/User/.gitignore
Vince,

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

301

Перш ніж перенастроювати файл глобального виключення, ви можете перевірити, для чого він налаштований, використовуючи цю команду:

git config --get core.excludesfile

У моєму випадку, коли я його запустив, я побачив, що мій файл глобальних виключень був налаштований на

~ / .gitignore_global
і там уже було перелічено пару речей. Тож у випадку даного питання може бути доцільним спочатку перевірити наявний файл виключення та додати до нього нову маску файлу.


2
це чудово працює. Налаштуйте свій глобальний файл gitignore як зазвичай; один запис на рядок.
Маартен Хартман

237

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

* nix:

~/.config/git/ignore

Windows:

%USERPROFILE%\git\ignore

Можливо, вам доведеться створити gitкаталог і ignoreфайл, але тоді ви можете помістити свої глобальні ігнори у цей файл, і все!

Джерело

У якому файлі розмістити шаблон, залежить від способу використання шаблону.

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

1
Це чудово; Я не знав про це ... однак це не генерований файл? Чи можна його перезаписати під час оновлення / перевстановлення?
danielsdesk

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 перевірте в каталозі користувачів свої .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.
Шрі Санкаран

Я думаю, він думав, що користувач буде досить розумним, щоб усвідомити.
СВЯТЛЕННЯ

2

Для цього слід створити файл виключення. Перевірте цю суть яка досить сама пояснює.

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


Я намагаюся зробити це в усьому світі, а не лише за репортажем
Mild Fuzz

Так, саме з цим я пов’язаний у суті. Мене трохи збентежило первісне запитання. Ви зробили це git rm --cached?
Nic

так, спробував це. Мені здається, я дотримувався всіх рекомендованих порад! Що я пропускаю?
Легкий фузз

Як було запропоновано, я додав би ваш статус git і виключає інформацію до питання :)
Nic

2

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

Я сподіваюся, що це комусь допоможе.


0

Якщо ви використовуєте VSCODE, ви можете отримати це розширення, щоб впоратися із завданням. Він спостерігає за робочим простором щоразу, коли ви зберігаєте свою роботу, і допомагає вам автоматично ігнорувати файли та папки, вказані в налаштуваннях коду.json ignoreit (розширення vscode)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.