українська мова ▾
Localized versions of gitignore manual
  1. English
  2. Français
  3. 日本語
  4. Português (Brasil)
  5. українська мова
  6. 简体中文
Topics ▾ Latest version ▾ gitignore last updated in 2.52.0
Changes in the gitignore manual
  1. 2.52.0 2025年11月17日
  2. 2.42.1 → 2.51.2 no changes
  3. 2.42.0 2023年08月21日
  4. 2.41.1 → 2.41.3 no changes
  5. 2.41.0 2023年06月01日
  6. 2.34.1 → 2.40.4 no changes
  7. 2.34.0 2021年11月15日
  8. 2.33.1 → 2.33.8 no changes
  9. 2.33.0 2021年08月16日
  10. 2.32.1 → 2.32.7 no changes
  11. 2.32.0 2021年06月06日
  12. 2.22.2 → 2.31.8 no changes
  13. 2.22.1 2019年08月11日
  14. 2.22.0 2019年06月07日
  15. 2.20.1 → 2.21.4 no changes
  16. 2.20.0 2018年12月09日
  17. 2.19.1 → 2.19.6 no changes
  18. 2.19.0 2018年09月10日
  19. 2.17.0 → 2.18.5 no changes
  20. 2.16.6 2019年12月06日
  21. 2.10.5 → 2.15.4 no changes
  22. 2.9.5 2017年07月30日
  23. 2.5.6 → 2.8.6 no changes
  24. 2.4.12 2017年05月05日
  25. 2.3.10 no changes
  26. 2.2.3 no changes
  27. 2.1.4 2014年12月17日
  28. 2.0.5 2014年12月17日

Check your version of git by running

git --version

НАЗВА

gitignore — Вказує навмисно невідстежувані файли, які потрібно ігнорувати

СИНОПСИС

$XDG_CONFIG_HOME/git/ignore, $GIT_DIR/info/exclude, .gitignore

ОПИС

Файл gitignore вказує на навмисно невідстежувані файли, які Git має ігнорувати. Файли, які вже відстежуються Git, залишаються в силі; див. ПРИМІТКИ нижче для отримання детальної інформації.

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

  • Шаблони зчитуються з командного рядка для тих команд, які їх підтримують.

  • Шаблони зчитуються з файлу .gitignore у тому ж каталозі, що й шлях, або в будь-якому батьківському каталозі (до верхнього рівня робочого дерева), причому шаблони у файлах вищого рівня перезаписуються шаблонами у файлах нижчого рівня аж до каталогу, що містить файл. Ці шаблони збігаються відносно розташування файлу .gitignore. Проект зазвичай включає такі файли .gitignore у свій репозиторій, що містять шаблони для файлів, згенерованих як частина збірки проекту.

  • Зчитування шаблонів $GIT_DIR/info/exclude.

  • Шаблони, що зчитуються з файлу, визначеного змінною конфігурації core.excludesFile.

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

  • Шаблони, які мають бути контрольованими версіями та розповсюджуватися до інших репозиторіїв через клон (тобто файли, які всі розробники захочуть ігнорувати), слід помістити у файл .gitignore.

  • Шаблони, що є специфічними для певного репозиторію, але не потребують спільного використання з іншими пов’язаними репозиторіями (наприклад, допоміжні файли, що знаходяться всередині репозиторію, але є специфічними для робочого процесу одного користувача), слід помістити у файл $GIT_DIR/info/exclude.

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

Базові інструменти Git, такі як git ls-files та git read-tree, зчитують шаблони gitignore, задані параметрами командного рядка, або з файлів, заданих параметрами командного рядка. Інструменти Git вищого рівня, такі як git status та git add, використовують шаблони з вищезазначених джерел.

ФОРМАТ ВИЗНАЧНОГО ШАБЛОНУ

  • Порожній рядок не відповідає жодному файлу, тому він може служити роздільником для зручності читання.

  • Рядок, що починається з символу #, служить коментарем. Поставте зворотну скісну риску ("\") перед першим хешем для шаблонів, які починаються з хеша.

  • Кінцеві пробіли ігноруються, якщо вони не взяті в лапки зі зворотною скісну рискою ("\").

  • Необов’язковий префікс "!", який заперечує шаблон; будь-який відповідний файл, виключений попереднім шаблоном, буде знову включено. Неможливо повторно включити файл, якщо батьківський каталог цього файлу виключено. Git не відображає виключені каталоги з міркувань продуктивності, тому будь-які шаблони для файлів, що містяться, не мають жодного ефекту, незалежно від того, де вони визначені. Поставте зворотну скісну риску ("`") перед першим "`!" для шаблонів, які починаються з буквального "!", наприклад, "\!important!.txt`".

  • Слеш "/" використовується як роздільник каталогів. Роздільники можуть знаходитися на початку, посередині або в кінці шаблону пошуку .gitignore.

  • Якщо на початку або посередині (або в обох) шаблону є роздільник, то шаблон залежить від рівня каталогу конкретного файлу .gitignore. В іншому випадку шаблон може також збігатися на будь-якому рівні нижче рівня .gitignore.

  • Якщо в кінці шаблону є роздільник, то шаблон відповідатиме лише каталогам, інакше шаблон може відповідати як файлам, так і каталогам.

  • Наприклад, шаблон doc/frotz/ відповідає каталогу doc/frotz, але не каталогу a/doc/frotz; проте frotz/ відповідає frotz та a/frotz, що є каталогом (усі шляхи відносні відносно файлу .gitignore).

  • Зірочка "*" відповідає будь-чому, крім косої риски. Символ "?" відповідає будь-якому одному символу, крім "/". Нотація діапазону, наприклад, [a-zA-Z], може бути використана для збігу з одним із символів у діапазоні. Див. fnmatch(3) та прапорець FNM_PATHNAME для отримання детальнішого опису.

Дві послідовні зірочки ("**") у шаблонах, що збігаються з повним шляхом, можуть мати спеціальне значення:

  • Початковий символ "**", а потім скісний риса, означає збіг у всіх каталогах. Наприклад, "**/foo" відповідає файлу або каталогу "foo" будь-де, так само, як і шаблон "foo". "**/foo/bar" відповідає файлу або каталогу "bar" будь-де, що знаходиться безпосередньо в каталозі "foo".

  • Заключний фрагмент "/**" відповідає всьому всередині. Наприклад, "abc/**" відповідає всім файлам у каталозі "abc", відносно розташування файлу .gitignore, з нескінченною глибиною.

  • Слеш-риска, за якою слідують дві послідовні зірочки, а потім ще одна скісну риска, відповідає нулю або більше каталогам. Наприклад, "a/**/b" відповідає "a/b", "a/x/b", "a/x/y/b" тощо.

  • Інші послідовні зірочки вважаються звичайними зірочками та збігатимуться згідно з попередніми правилами.

КОНФІГУРАЦІЯ

Додаткова змінна конфігурації core.excludesFile вказує шлях до файлу, що містить шаблони імен файлів для виключення, подібно до $GIT_DIR/info/exclude. Шаблони у файлі виключень використовуються на додаток до тих, що у $GIT_DIR/info/exclude.

НОТАТКИ

Мета файлів gitignore полягає в тому, щоб певні файли, які не відстежуються Git, залишалися невідстежуваними.

Щоб зупинити відстеження файлу, який наразі відстежується, скористайтеся командою git rm --cached для видалення файлу з індексу. Ім’я файлу потім можна додати до файлу .gitignore, щоб запобігти повторному впровадженню файлу в наступних коммітах.

Git не переходить за символічними посиланнями під час доступу до файлу .gitignore у робочому дереві. Це забезпечує узгодженість поведінки під час доступу до файлу з індексу або дерева, а не з файлової системи.

ПРИКЛАДИ

  • Шаблон hello.* відповідає будь-якому файлу або каталогу, ім’я якого починається з hello.. Якщо потрібно обмежити це лише каталогом, а не його підкаталогами, можна додати перед шаблоном скісну риску, наприклад /hello.*; шаблон тепер відповідає hello.txt, hello.c, але не a/hello.java.

  • Шаблон foo/ відповідатиме каталогу foo та шляхам під ним, але не відповідатиме звичайному файлу чи символічному посиланню foo (це узгоджується з тим, як pathspec працює загалом у Git)

  • Шаблони doc/frotz та /doc/frotz мають однаковий ефект у будь-якому файлі .gitignore. Іншими словами, початкова коса риска не має значення, якщо у шаблоні вже є середня коса риска.

  • Шаблон foo/* відповідає foo/test.json (звичайний файл), foo/bar (каталог), але не відповідає foo/bar/hello.c (звичайний файл), оскільки зірочка у шаблоні не відповідає bar/hello.c, який містить скісну риску.

 $ git status
 [...]
 # Невідстежувані файли:
 [...]
 # Документація/foo.html
 # Документація/gitignore.html
 # file.o
 # lib.a
 # src/internal.o
 [...]
 $ cat .git/info/exclude
 # ігнорувати об'єкти та архіви будь-де в дереві.
 *.[oa]
 $ cat Documentation/.gitignore
 # ігнорувати згенеровані html-файли,
 *.html
 # крім foo.html, який підтримується вручну
 !foo.html
 $ git status
 [...]
 # Невідстежувані файли:
 [...]
 # Documentation/foo.html
 [...]

Інший приклад:

 $ cat .gitignore
 vmlinux*
 $ ls arch/foo/kernel/vm*
 arch/foo/kernel/vmlinux.lds.S
 $ echo '!/vmlinux*' >arch/foo/kernel/.gitignore

Другий .gitignore запобігає ігноруванню Git arch/foo/kernel/vmlinux.lds.S.

Приклад виключення всього, крім певного каталогу foo/bar (зверніть увагу на /* - без косої риски шаблон також виключатиме все всередині foo/bar):

 $ cat .gitignore
 # виключити все, крім каталогу foo/bar
 /*
 !/foo
 /foo/*
 !/foo/bar

GIT

Частина набору git[1]

AltStyle によって変換されたページ (->オリジナル) /