Списки неотслеживаемых файлов

Списки неотслеживаемых файлов

По умолчанию Git отслеживает все файлы, расположенные в каталоге репозитория. При работе может понадобиться какие-то из этих файлов не отправлять на удалённый репозиторий или просто не отслеживать их изменение, например файлы кеша, логи или данные текущей копии проекта. Для указания списка таких файлов в Git создаётся специальный файл с именем .gitignore.

.gitignore

Специальный файл, в котором хранятся пути к файлам, для которых будет выключен контроль версий. То есть список тех файлов, которые будут игнорироваться Git при отслеживании изменений. Пути к файлам могут задаваться с использованием шаблонов. Каждый путь или шаблон вноситься с новой строки.

Расположение файла

Файл «.gitignore» можно расположить в любом каталоге. Допускается использование нескольких фалов, при этом каждый будет распространять правила игнорирования на тот каталог, в котором находится, включая вложенные каталоги. Например, используйте общий файл «.gitignore» в корневом каталоге проекта и файлы во вложенных каталогах, при необходимости.

Индексирование файла

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

Игнорирование файлов уже добавленных в репозитории

При добавлении файла в список игнорирования он не удалится из репозитория в том случае, если уже был в него помещён ранее. Если ваша цель - убрать игнорируемые файлы из репозитория, то это нужно сделать отдельно.

Посмотреть список игнорируемых файлов

Для просмотра списка игнорируемых файлов воспользуйтесь командой git status с параметром --ignored. Нужный вам список смотрите в секции «Ignored files:».

# Покажет список игнорируемых файлов
$ git status --ignored

Причина попадания файла в список игнорируемых файлов

Файл попадает в список игнорируемых файлов потому, что где-то в проекте есть файл .gitignore с его именем, или его имя удовлетворяет какому-либо шаблону из файла .gitignore. Для того, чтобы понять какой именно файл или шаблон блокирует игнорируемый файл, можно воспользоваться командой check-ignore с параметром -v.

# Покажет причину игнорирования файла
$ git check-ignore -v <имя файла>

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

Шаблоны имён файлов

В «.gitignore» заносится полное имя файла, для которого нужно отключить отслеживание изменений. Вместо полного имени допускается использовать шаблоны имён фалов. Ниже описаны некоторые спецсимволы, используемые в шаблонах.

Один символ

? - Знак вопроса заменяет любой символ на своём месте. Не важно, что это будет за символ, но он должен присутствовать в имени файла.

logo?.jpg
Файлы: logo1.jpg, logo2.jpg, logo3.jpg

Ноль или несколько символов

* - Одна звёздочка означает, что на её месте может быть несколько или ни одного символа:

*.jpg
Любой файл c расширением jpg

logo.*
Любой файл с именем «logo"

Ноль или несколько каталогов

** - Две звёздочки означают, что на их месте может быть несколько или ни одного каталога:

**log.txt
Файлы logo.txt в любом месте репозитория

/img/**/*.jpg
Все файлы jpg в каталоге img корневого каталога

Один из перечисленных символов

[] - Квадратные скобки используются для указания набора символов, шаблон соответствует имени файла с любым из этих символов вместо скобок

log[123].txt
Файлы log1.txt, log2.txt, log3.txt

log[0-9].txt
log[a-z].txt
Возможно указать интервалы, все цифры, все символы

log[!123].txt Возможно указать символы, не совпадающие с перечисленными

Искать от корневого каталога

/Путь - Косая черта в начале имени файла или каталога означает, что файл нужно искать от начала корневого каталога репозитория.

/*.txt
Все текстовые файлы в корневом каталоге

Искать в любом месте

Путь или **Путь - Не указывайте косую черту в начале или укажите двойную звёздочку в начале имени файла или каталога, тогда файл будет искаться в любом месте репозитория.

*.txt
Текстовые файлы в любом месте репозитория

**/*.txt
Такое же поведение при использовании звёздочек

Отменить исключение

!Путь - Восклицательный знак используется для отмены исключения описанного ранее. Используется в случаях, когда после более общего шаблона отменяют какие-то частные случаи.

*/logo.*
!*/logo.jpg
Файлы с именем logo с любым расширением кроме jpg

Экранирование спецсимволов

\ - Спецсимволы в шаблоне имени экранируются обратной косой чертой

logo\[1\].png
Экранирует квадратные скобки в имени файла

Комментарии к шаблонам

# - Для указания комментариев к шаблонам используйте символ «решетка». Символ следует указывать в начале строки, далее следует текст комментария

# Исключить все файлы с логотипом
*/logo.*