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

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

Какие файлы нужно исключить?

  • Файлы редакторов IDE
  • Выполняемые файлы - log, lock, cache или непостоянные файлы (tmp).
  • Файлы системы, для Mac - .DS_Store, для Windows - Thumbs.db
  • Директории зависимостей - vendor / node_modules.
  • Build директории - public / dist.
  • Файлы с секретной информацией, такие как пароли или ключи API.

Правила синтаксиса файла .gitignore

Синтаксис gitignore применяют glob формат с целью выбора файлов.

  • 1 строчка - один принцип,
  • Пустые строки пропускаются,
  • (#) - означает комментарии, создавать следует в начале строки
  • (/) - в начале строки указывает, что принцип используется только лишь в файлах и папках, которые находятся в том же каталоге, как и файл .gitignore,
  • (*) указывает на любое число знаков(ноль или больше),
  • (?) заменяет от нуля до единого знака. Можно указывать в различном месте,
  • (**) применяют с целью указания каждого числа поддиректорий,
  • (!) в начале строчки значит инвертирование правила, обязан для указания исключений из правил игнорирования,
  • (\) - применяют с целью экранирования спецсимволов, например, чтобы игнорировать файл с именем "!file!.txt", нужно написать такое правило: "\!file!.txt",
  • Для исключения всего каталога, правило обязано заканчиваться на (/), в другом случае правило считается именованием файла.

Пример .gitignore файла

Пример был взят из нашего личного проекта
# Node artifact files
node_modules/
dist/
# Compiled Java class files
*.class
# Log files
*.log
# Package files
*.jar
# Maven
target/
dist/
# IDE
.idea/
.vscode/
# Unit test reports
TEST*.xml
# Generated by MacOS
.DS_Store
# Generated by Windows
Thumbs.db
# Applications
*.app
*.exe
*.war
# Large media files
*.mp4
*.tiff
*.avi
*.flv
*.mov
*.wmv

Комментарии

# - считается объяснением и игнорирует строки. Пустые строки применяют для лучшей читабельности кода.

Рассечение

(/) - предполагает ограничитель каталогов. Косая черта в начале шаблона относится к каталогу, в котором находится .gitignore.
Если пример начинается с /, то к нему принадлежат файлы и каталоги, которые находятся в корне.
Если пример начинается без /, то к нему принадлежат все файлы, директории и поддиректории.
Если пример заканчивается /, то он относится только к директориям. Если директория игнорируется, то и его внутри лежащие папки и файлы тоже.

Литеральные имена файлов

Легкий способ добавить файл в исключение - это прописать полный путь. assets/idea.log

Знаки подстановки

* – Равно нулю или более символов.
**- Объединенные звёздочки подходят любому файлу, нуля или больше каталогов. Когда за ним стоит слеш ( /), он соответствует только каталогам.
? – Относится к любому единичному знаку.
app/** = Совпадает с любым файлом внутри каталога app.

Квадратные скобки

[...] – подходит каждому знаку, находящихся в квадратные скобки. Если два символа связаны через дефис, то это указан диапазон символов. Диапазон содержит в себе все без исключения знаки, которые находятся между этими двумя символами. Диапазон можно задать в буквенном или числовом формате.

В случае если первый знак после [ является восклицательным знаком (!), то образец подходит любому знаков, кроме знаков из указанного набора.
*.[ae] = filename.e, filename.a
*.[!ae] = filename.x, filename.3, filename.s

Отрицательные образцы

Если строка начинается с (!), она откладывает (вторично включает) любой файл, который игнорируется предшествующим стандартом. Исключением считается вторичное добавления файла снизу вашего документа, если исключен его родительский каталог.

Как исключить файлы, которые уже отслеживаются?

Случается так, когда файл уже был добавлен в отслеживание по ошибки/ необходимо прекратить отслеживание.

Сначала выполните всевозможные неполные изменения кода, а уже потом используйте команду (команда для всех файлов). Чтобы отменить отслеживание одного файла, воспользуйтесь командой (git rm -r --cached filename) git rm -r --cached . Таким образом мы удалили файл из индекса, но не удалили его из рабочего дерева.

Эта команда убирает все модифицированные файлы из индекса. Затем пропишите новую инициализацию файлов
git add .

Осталось добавить коммит
git commit -m “gitignore is working”

Личные правила игнорирования

Заготовки, специфичные для вашего местного репозитория и никак не будут доступны в иных репозиториях, обязаны добавляться в файле .git/info/exclude.

Например, этот файл можно использовать для игнорирования сгенерированных файлов из ваших личных инструментов проекта.

Глобальный .gitignore

В Git присутствует замечательная вероятность как глобальный файл .gitignore. Вы сможете настроить игнорирования для любого Git репозитория в локальной системе.

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

Для того чтобы определить ~/.gitignore_global в качестве глобального файла игнорирования Git, выполните список действий:

  1. Создаем файл: touch ~/.gitignore_global
  2. Добавляем файл в Git-конфигурацию: git config --global core.excludesfile ~/.gitignore_global
  3. Открываем файл в редакторе и добавляем кастомные настройки.

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

Отладка файла .gitignore

Если у вас ряд файлов gitignore, то допустить ошибку очень просто. По итогу может получиться ненужный файл в репозитории. Для того чтобы отследить ошибки файлов, используйте команду git check-ignore с опцией -v, она показывает, что нужно отобразить данные совпадающего шаблона
Для проверки файла jar.lock, нужно осуществить команду:
git check-ignore -v www/jar.lock

После этого вы увидите примерно такое сообщение, которое отобразит получившийся путь к файлу
www/.gitignore:27:/jar.lock
www/jar.lock
Файл может находиться не только в вашем проекте.

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

Как быстро посмотреть файлы, которые проигнорированы? Используйте команду
git status --ignored

Заключение

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

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.