Если вы работаете с системой контроля версий GIT, то вам необходимо сразу же познакомиться с возможностью исключения файлов/папок/разделов из репозитория.
Что исключать?
Обычно исключаются динамические файлы и файлы хранящие секретные данные.
К первым можно отнести файлы генерируемые или загружаемые пользователями, файлы логов, временные файлы. Ко вторым - пароли, токены, коннекции базам данных и т.д.
Как это делается?
Обычно - двумя способами
1. Файл .gitignore
Этот файл всегда хранится в проекте. Он содержит правила исключения, каждый из которых имеет относительный путь. Он добавляется и хранится в самом репозитории. Таким образом, любой другой разработчик, скачавший себе проект будет иметь эти правила и не сделает ошибку, добавив ненужные файлы.
2. Глобальный файл исключений
Его можно положить в любом месте на компьютере и назвать как угодно, при этом объяснив программе git подробности об этом:
git config --global core.excludesfile ~/.gitignore_global
В данном случае, файл называется .gitignore_global и лежит он в папке пользователя.
Зачем нужен глобальный файл исключений?
Предположим вы разрабатываете что-то используя любой JetBrains'овский продукт: Php Storm, RubyMine, Intellij Idea и т.п. Любой из них создаёт в корне проекта папку .idea со своими настройками, который необходимо исключать. Можно добавлять исключение этой папки в каждом проекте, а можно объявить один раз в глобальном файле.
Другие подробности про gitignore тут: https://git-scm.com/docs/gitignore