Назад
Git може ігнорувати файли у трьох місцях, а не лише в .gitignore
SiTech AI Team2 წთ. საკითხავი

Git може ігнорувати файли у трьох місцях, а не лише в .gitignore

Допис у блозі розбирає три рівні ігнорування файлів у Git: доданий до репозиторію .gitignore, локальний .git/info/exclude та глобальний файл, що діє для всієї машини.

Більшість тих, хто працює з Git, знає лише один спосіб тримати файли поза контролем версій — додати їх до .gitignore. Допис у блозі nelson.cloud нагадує, що насправді Git підтримує три рівні правил ігнорування, і кожен із них вирішує власну задачу.

Рівень проєкту: .gitignore

Звичний варіант — файл .gitignore у корені репозиторію. Він зберігається в Git разом із кодом, тому всі контриб'ютори отримують однакові правила. Перелічені в ньому файли не враховуються під час виконання команд Git — саме тому це правильне місце для результатів збірки, залежностей і тимчасових файлів редактора, які мають ігнорувати всі.

Рівень репозиторію: .git/info/exclude

Другий файл — .git/info/exclude. Він лежить у каталозі .git кожного репозиторію, але зміни в ньому ніколи не потрапляють у коміти. У свіжому репозиторії там зазвичай лише кілька рядків коментарів. Файл призначений для особистих винятків в одному репозиторії: наприклад, notes.txt, корисний вам, але недоречний у проєкті. Такі записи тут тримають .gitignore охайним і не публікують уподобання, яких ніхто більше не поділяє.

Рівень машини: ~/.config/git/ignore

Третій рівень — глобальний. Файл ~/.config/git/ignore розташований у домашньому каталозі й діє для всіх репозиторіїв на комп'ютері; він не належить жодному проєкту. Класичний випадок — системний шум: на macOS це .DS_Store. Розташування можна змінити: команда git config --global core.excludesFile ~/.gitignore_global вказує Git на інший файл, а git config --global --unset core.excludesFile повертає типове налаштування.

Який файл ігнорує шлях

Якщо файл несподівано невидимий для Git, команда git check-ignore -v покаже точне правило, яке спрацювало. Для .DS_Store результат може бути .gitignore:1:.DS_Store, .git/info/exclude:7:.DS_Store або ~/.config/git/ignore:2:.DS_Store — залежно від того, який із трьох рівнів відповідальний. Якщо файл не ігнорує ніщо, команда не виведе нічого.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.