В системе Git можно настроить возможность автоматического игнорирования файлов.
То есть, можно указать Git, что файлы определенного типа не нужно отслеживать. Выполняется такая настройка с помощью специального файла . Подобная возможность отключения отслеживания файлов в системе Git может понадобиться в случае, когда автоматически генерируются служебные файлы.1
.gitignore
К примеру, если развертывать в проекте Compass, то будет создан каталог , в который данный фреймворк помещает свой кэш, генерируемый автоматически при каждом изменении любого из файлов проекта.1
.sass
Давайте на практике разберемся, каким образом можно настроить игнорирование файлов в Git с помощью .1
.gitignore
Создание нового проекта
Создаю новый проект с именем , в котором помещаю несколько файлов разного типа:1
git_ignore
$ mkdir git_ignore
$ cd git_ignore/
$ touch index.html style.cssИнициализирую репозиторий Git в директории , индексирую созданные файлы и фиксирую их:1
.git_ignore
$ git init
Initialized empty Git repository in /home/aaron/Projects/git_ignore/.git/
$ git add .
$ git commit -m 'First Commit'Вывод команды показывает, что все чисто:1
git status
$ git status
On branch master
nothing to commit, working directory cleanНастройка игнорирования в .gitignore
Для настройки игнорирования определенных типов файлов в системе Git необходимо первоначально создать файл :1
.gitignore
$ touch .gitignoreОткроем созданный файл в любом редакторе:1
.gitignore
$ nano -w .gitignore… и пропишем в нем следующие строки:
*.txt
*.mdТем самым мы говорим Git, что нужно игнорировать все файлы с расширением и 1
.txt
внутри директории 1
.md
. То есть, система контроля не будет отслеживать изменения во всех файлах этих типов.1
git_ignore
Проиндексируем и зафиксируем изменения (создание файла настроек ), а затем проверим данный факт. Для этого в рабочей директории 1
.gitignore
создаю еще несколько типов файлов:1
git_ignore
$ touch main.css readme.txt humans.mdЗатем выполняю индексацию всех файлов, которые были добавлены или изменены в рабочем каталоге:
$ git add .И смотрю, что мне показывает команда :1
git status
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: main.cssСистема Git увидела только новый файл . Два других файла - 1
main.css
и 1
readme.txt
- проигнорированы системой. Отлично! Зафиксирую изменения.1
humans.md
Можно создать еще пару файлов в разных директориях и посмотреть на вывод команды в консоли:1
git status

Усложнить задачу игнорирования в .gitignore
Можно усложнить задачу игнорирования в Git, добавив в файл директорию, содержимое которой также должно игнорироваться. Пускай это будет обычная директория 1
.gitignore
и скрытая директория 1
ignore
(с точкой перед именем):1
.ignore
Добавлю в файл пару строк таким образом:1
.gitignore
$ cat .gitignore
*.txt
*.md
ignore/
.ignore/Проиндексирую изменения, а затем выполню операции по созданию директорий и файлов внутри них:
$ mkdir ignore
$ mkdir .ignore
$ touch ignore/reset.css
$ touch .ignore/normilize.cssВновь ввожу команду просмотра состояния репозитория Git:
$ git status
On branch master
nothing to commit, working directory cleanВсе сработало - Git не захотел видеть директории , 1
ignore
, а также их содержимое. Отлично!1
.ignore
Шаблоны в файле .gitignore
Для файла доступны шаблоны, с помощью которых можно задать маски для выборки необходимых типой файлов. Однако, обширная тема шаблонов выходит за рамки данной статьи. При желании можно почитать по теме шаблонов в книге “Pro Git - профессиональный контроль версий”.1
.gitignore