
Списки неотслеживаемых файлов
По умолчанию 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.*