> For the complete documentation index, see [llms.txt](https://olexsyn.gitbook.io/enote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olexsyn.gitbook.io/enote/dev/git/gitignore.md).

# .gitignore

Буває, що у вас є клас файлів, що ви не хочете щоб Git їх автоматично індексував чи навіть відображав як неконтрольовані. Зазвичай це автоматично згенеровані файли, наприклад файли лоґів або файли вироблені вашою системою збірки. У таких випадках, ви можете створити файл `.gitignore`, що містить взірці, яким відповідають ці файли. Ось приклад файлу `.gitignore`:

```console
$ cat .gitignore
*.[oa]
*~
```

Перший рядок каже Git ігнорувати файли, що закінчуються на “.o” або “.a” — об’єктні та архівні файли, що можуть бути продуктами компіляції вашого коду. Другий рядок каже Git ігнорувати всі файли, що їхні назви закінчуються на тильду (`~`), яка використовується багатьма текстовими редакторами (такими як Emacs) щоб позначати тимчасові файли. Ви також можете додати директорії log, tmp та pid, автоматично згенеровану документацію, тощо. Заповнення файлу `.gitignore` вашого нового сховища до початку праці зазвичай гарна думка, адже це допоможе вам випадково не додати файли, які ви не хочете додавати до репозиторія Git.

Правила для взірців, які ви можете додати до файлу `.gitignore`:

* Порожні рядки та рядки, що починаються з `#`, ігноруються.
* Стандартні ґлоб взірці працюють, і будуть застосовані для всього робочого дерева рекурсивно..
* Ви можете почати взірець з прямої похилої риски (`/`) щоб уникнути рекурсії.
* Ви можете завершити взірець похилою рискою (`/`) щоб позначити директорію.
* Ви можете відкинути взірець, якщо почнете його зі знаку оклику (`!`).

Ґлоб (glob) взірці – це ніби спрощені регулярні вирази, що їх використовують оболонки. Зірочка (`*`) відповідає нулю або більше символам. `[абв]` відповідає будь-якому з символів всередині квадратних дужок (у цьому випадку а, б або в). Знак питання (`?`) відповідає одному символу. Квадратні дужки з символами, що розділені дефісом (`[0-9]`) відповідають будь-якому символу між ними (у даному випадку від 0 до 9). Ви можете використовувати дві зірочки щоб позначити вкладені директорії: `a/**/z` відповідає `a/z`, `a/b/z`, `a/b/c/z` тощо.

Ось ще один приклад файлу `.gitignore`:

```
# ігнорувати всі файли .a
*.a

# Проте відстежувати lib.a, хоч ми й ігноруємо .a файли вище
!lib.a

# Ігнорувати файл TODO тільки в поточній теці, не в інших теках subdir/TODO
/TODO

# Ігнорувати усі файли в теці build/
build/

# Ігнорувати doc/notes.txt, проте не doc/server/arch.txt
doc/*.txt

# Ігнорувати усі .pdf файли в теці doc/ та всіх її підтеках
doc/**/*.pdf
```

<table data-header-hidden><thead><tr><th width="166"></th><th></th></tr></thead><tbody><tr><td>Підказка</td><td>GitHub підтримує доволі вичерпний список гарних прикладів файлів <code>.gitignore</code> для десятків проектів та мов за адресою <a href="https://github.com/github/gitignore">https://github.com/github/gitignore</a>, якщо ви бажаєте мати зразок для свого проекту.</td></tr></tbody></table>

<table data-header-hidden><thead><tr><th width="168"></th><th></th></tr></thead><tbody><tr><td>Зауваження</td><td><p>In the simple case, a repository might have a single <code>.gitignore</code> file in its root directory, which applies recursively to the entire repository. However, it is also possible to have additional <code>.gitignore</code> files in subdirectories. The rules in these nested <code>.gitignore</code> files apply only to the files under the directory where they are located. (The Linux kernel source repository has 206 <code>.gitignore</code> files.)</p><p>It is beyond the scope of this book to get into the details of multiple <code>.gitignore</code> files; see <code>man gitignore</code> for the details.</p></td></tr></tbody></table>

## Игнорирование ранее закоммиченного файла

gitignore . Используйте команду git rm с параметром --cached , чтобы удалить этот файл из репозитория, но оставить его в рабочем каталоге как игнорируемый файл. Опустите опцию --cached , чтобы удалить файл как из репозитория, так и из локальной файловой системы.
