Конфигурация файла .gitignore в Git

Файл .gitignore необходим для сокрытия файлов и директорий от Git. Чаще всего, исключают конфигурационные файлы (особенно с паролями), временные файлы и директории. Синтаксис файла .gitignore соответствует glob формату для отбора.

Основной синтаксис:

Каждая строчка — отдельный шаблон
Пустые строки просто игнорируются
Строки, которые начинаются с решетки (#) — комментарии
Прямой слеш (/) в начале строки указывает на текущую корневую директорию (где находится файл .gitignore)
Астериск (*) заменяет любое количество символов
Два астериска (**) используются для указания всех субдиректорий
Восклицательный знак (!) в начале строки инвертирует шаблон (используется для исключений)
Для экранирования спецсимволов используем обратный слэш (\).
Для игнорирования всей директории, правило должно оканчиваться на слэш(/), в противном случае правило считается именем файла.

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

# Игнорируем файл file1.txt.
file1.txt
# Игнорируем tmp файлы
*.tmp
# Но конкретно main.tmp не игнорировать
!main.tmp
# Игнорируем zip файлы только в корне проекта
/*.zip
# Игнорируем css файлы из папки bar не включая подпапки
# Допустим файл /bar/temp/main.css не будет проигнорирован т.к. он в подпапке temp
/bar/*.css
# Игнорировать js файлы из папки bar и подпапок, если таковые будут
/bar/**.*.js

Как исключить директорию из отслеживания, но добавить субдиректорию в отслеживание?

Задача 1

Убрать папку node_modules, но оставить в ней 2 подпапки jquery и semantic

├── js
│ ├── app.js
│ └── system.js
├── scss
│ ├── system.scss
│ └── theme.scss
└── vendor
├── node_modules <-- Убрать
│ ├── load-json-file
│ ├── lodash
│ ├── jquery <-- Оставить
│ ├── make-error
│ ├── semantic <-- Оставить
│ └── yargs
└── semantic.json

Решение:

/vendor/node_modules/*
!/vendor/node_modules/jquery/
!/vendor/node_modules/semantic/

Задача 2

Убрать папку node_modules, но оставить в её подпапке jquery подпапку dist

├── js
│ ├── app.js
│ └── system.js
├── scss
│ ├── system.scss
│ └── theme.scss
└── vendor
├── node_modules <-- Убрать
│ ├── load-json-file
│ ├── lodash
│ ├── jquery
│ │ └──dist <-- Оставить
│ ├── make-error
│ ├── semantic
│ └── yargs
└── semantic.json

Решение:

/vendor/node_modules/*
/vendor/node_modules/jquery/*
!/vendor/node_modules/jquery/
!/vendor/node_modules/jquery/dist/

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

Если вы добавили файл или директорию в .gitignore, после того как они попали в репозиторий, то их необходимо удалить из репозитория командой:

$ git rm --cached

Например убрать папку storage/framework/cache/ (обратите внимание: вначале отсутствует слеш)

$ git rm -r --cached "storage/framework/cache/"

За подробностями можете обратиться к официальному руководству.


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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.


Unlix © Все права защищены 2020

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!