Настройки в файле .gitignore позволяют исключить из списка файлов сканируемых GIT, все то что отслеживать не надо. Обычно это так называемые юзер-файлы, изображения, архивы, документация и т.п.
В данной статье рассмотрим типовой случай настоек в .gitignore.
Если вы ведете разработку в какой то CMS (CMF, FW и т.п), а дальше я буду рассматривать ситуацию на примере работы с WordPress, то большая часть файлов, находящихся в проекте, не требует отслеживания. Это файлы которые составляют ядро фреймворка, который вы используете, а также сторонние плагины и темы, за изменением которых вам не нужно наблюдать.
Тем не менее GIT будет показывать их полный список (если вы только их не «закоммитите» сразу в проект) как unstaged changes. А если вы выполните их commit в проект, то пополните GIT базу проекта большим объемом лишних данных.
С форматом файла .gitignore можно ознакомиться в официальном доке — git-scm.com/docs/gitignore. Есть также качественная статья на русском с примером, иллюстрирующим почти все правила (мне очень помогла, рекомендую).
Возвращаясь к примеру проекта на WordPress, мы имеем типичную ситуацию, когда вы разрабатываете тему (шаблон оформления) и какой то плагин с кастомным функционалом для сайта. Т.е. из всего проекта нужно выделить, порою, две папки, которые требуется отслеживать, а остальное исключить.
Пусть требуется отслеживать вот эти папки:
1 2 |
/wp-content/plugins/mycustomcode/ /wp-content/themes/mytheme/ |
В корне вам придется составить .gitignore такого содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# первое правило - исключить все файлы /* # кроме содержимого /wp-content/ !/wp-content/ # теперь исключим /wp-content/ /wp-content/* # но кроме двух подкаталогов - themes и plugins !/wp-content/themes/ !/wp-content/plugins/ # исключим все темы, кроме mytheme /wp-content/themes/* !/wp-content/themes/mytheme/ # исключим все плагины кроме mycustomcode /wp-content/plugins/* !/wp-content/plugins/mycustomcode/ |
Надеюсь, логику вы уловили. А хотелось бы, чтобы тоже самое можно было записать вот так:
1 2 3 |
/* !/wp-content/themes/priority/ !/wp-content/plugins/quest-duel/ |
К сожалению, последний вариант работать не будет. :)