В техподдержке мы постоянно используем git в качестве системы контроля версий.

Для нас это очень важно, так как над одним проектом одновременно может работать десять программистов — и все они должны иметь возможность комфортно работать с сайтом и не мешать своим коллегам.

Гит хорош тем, что позволяет хранить все состояния кода, ветки разработки, сливать изменения нескольких разработчиков на сайт и откатывать результаты при возникновении ошибок.

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

Для этого мы настроили .gitignore-файл со следующим содержимым:

# Исключаем настройки PHPStorm, мы в нём работаем
/.idea/

# Исключаем папку /bitrix кроме некоторых подпапок
!/bitrix
/bitrix/*

# оставляем печатные формы интернет-магазина
!/bitrix/admin/
/bitrix/admin/*
!/bitrix/admin/reports/

# оставляем нестандартные компоненты
!/bitrix/components/
/bitrix/components/bitrix/

# сохраняем весь php_interface за редкими исключениями
!/bitrix/php_interface/
/bitrix/php_interface/dbconn.ph*
/bitrix/php_interface/after_connect*
/bitrix/php_interface/logs/

# сохраняем шаблоны сайта
!/bitrix/templates/

# исключаем логи
/local/php_interface/logs/
/local/logs/

# исключаем загружаемые файлы
/upload/

# различные системные папки и файлы хостингов и операционных систем
/cgi-bin/
/awstats/
/webstat/
.DS_Store
.Spotlight-V100
.Trashes
Thumbs.db
ehthumbs.db

# исключаем все текстовые и подобные ресурсы (на нашей практике они всегда излишни)
*.xml
*.html
*.txt
*.log
*.css.map

# архивы, включая многотомные
*.zip
*.zip*  
*.tar
*.tar*
*.enc
*.enc*
*.gz
*.gz*
*.tgz
*.tgz*
*.sql
*.rar
.hg
.ftpconfig
*.doc
*.docx
*.pdf
*.rtf
*.xls
*.xlsx
*.ppt
*.pptx
*.psd
*.psb
*.sketch
core.*

# однако храним robots.txt — он нужен
!/robots.txt

# composer
composer.phar
/vendor/

# исключаем всякое от node.js
node_modules
bower_components
.grunt
.npm
.env

# и логи xhprof напоследок
/xhprof/logs

Благодаря тому, что к нам в техподдержку попадают самые различные проекты, мы оперативно дополняем данный файл новыми исключениями и внимательно следим за его актуальностью.

Здесь может возникнуть несколько дискуссионных моментов:

  1. Мы исключаем из гита .html, .xml, .txt-файлы. Хотя в ряде случаев они могут быть важны, мы решили, что такие случаи достаточно редки.
    Если подобный файл нужно внести в гит, мы добавляем его в исключения.
  2. Мы исключаем стандартные компоненты Битрикса, однако оставляем все остальные компоненты — в том числе компоненты маркетплейса.
    Это продиктовано практикой: пользы от этого оказалось больше, чем вреда.