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

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

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

В репозитарии gitignore от github собраны примеры gitignore файлов для всех типовых проектов.

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

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

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

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

git rm --cached <file>

Например убрать папку storage/framework/cache/

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

По мотивам: