Про gitignore

Иногда некоторые файлы нет смысла добавлять в индекс для отслеживания. Туда относятся файлы не относящиеся непосредственно к разработке:

  • Логи
  • Пользовательские файлы
  • Файлы сред разработки (конфиги и т.д.)
  • Внешние библиотеки
  • Файлы local конфигурации
  • Файлы ОС
  • Слишком большие файлы без кода (бинарки и т.д.)

Для этого создается файл .gitignore, в котором и указываются игнорируемые файлы (папки писать со слэшем).
В файле .gitignore можно исключить игнорируемые файлы. Например, нужно игнорить все файлы txt в папке config/ кроме sample.txt, который к примеру служит шаблоном для создания новых txt файлов. Делается это добавлением перед filename восклицательного знака (!), который в IT означает отрицание:

configs/*.txt
!configs/sample.txt

Но не получится сделать так:

configs/
!configs/sample.txt

Потому что нельзя исключить файл из той папки, которая исключена целиком

Для наглядности всего вышеописанного приведу в пример один из своих файлов .gitignore:

*.log
a.html
configs/*
!configs/sample.txt

git