Репозиторий и версии
Проблема: файлы с версиями
Заголовок раздела «Проблема: файлы с версиями»Знакомая картина в папке аналитика:
revenue.sqlrevenue_v2.sqlrevenue_v2_final.sqlrevenue_v2_final_new.sqlrevenue_final_FINAL_Ivan.sqlКакой файл рабочий? Что изменилось между версиями? Кто это поменял? Ответа нет. Когда запрос сломает отчёт, вернуться к хорошей версии трудно.
Git решает это так: файл один, а все его версии хранятся в истории.
Три понятия
Заголовок раздела «Три понятия»| Понятие | Что это |
|---|---|
| Репозиторий (repo) | Папка проекта вместе с историей всех изменений. Скрытая папка .git внутри хранит историю |
| Коммит (commit) | Снимок проекта в один момент. У него есть автор, время, сообщение и уникальный номер (hash) |
| Ветка (branch) | Отдельная линия изменений. В ней можно пробовать новое и не трогать основной код |
История репозитория — это цепочка коммитов:
a1b2c3 Add revenue modeld4e5f6 Filter completed orders9f8e7d Add refunds to revenue ← сейчас здесьВместо revenue_v2_final.sql у вас теперь коммит с понятным сообщением.
Git, GitHub и GitLab — не одно и то же
Заголовок раздела «Git, GitHub и GitLab — не одно и то же»| Что это | Где работает | |
|---|---|---|
| Git | Программа с командами commit, branch, merge | На вашем компьютере |
| GitHub, GitLab | Сайты для хранения репозиториев и работы команды | В интернете (или на сервере компании) |
- Git хранит историю. Он работает без интернета.
- GitHub и GitLab добавляют сверху: общий доступ, Pull Request (Merge Request), права доступа, CI/CD.
У вас есть локальный репозиторий на ноутбуке и удалённый (remote) на GitHub или GitLab. Команда git push отправляет коммиты туда. Команда git pull забирает чужие.
Ваш ноутбук GitHub / GitLab Ноутбук коллеги┌─────────────┐ git push ┌─────────────┐ git pull ┌─────────────┐│ локальный │ ─────────────► │ удалённый │ ─────────────► │ локальный ││ репозиторий│ ◄───────────── │ репозиторий│ ◄───────────── │ репозиторий│└─────────────┘ git pull └─────────────┘ git push └─────────────┘Что хранить в Git
Заголовок раздела «Что хранить в Git»| Храним | Не храним |
|---|---|
| SQL-запросы и модели dbt | Пароли, ключи API, файл .env |
| Python-скрипты, DAG для Airflow | Большие данные: CSV, Parquet, дампы баз |
| Конфиги и инфраструктура (Terraform) | Файлы базы данных (.duckdb) |
Документацию (README.md) | Временные файлы, __pycache__, .DS_Store |
Чтобы Git игнорировал файлы, их имена пишут в файл .gitignore. Мы сделаем это в следующем уроке.
Проверьте себя
Заголовок раздела «Проверьте себя»- Чем коммит отличается от файла
revenue_v2.sql? - Нужен ли интернет для
git commit? А дляgit push? - Чем Git отличается от GitHub?
Ответы
- Коммит — снимок всего проекта с автором, временем и сообщением. Все версии лежат в одной истории, а не в разных файлах.
- Для
commitинтернет не нужен. Дляpushнужен. - Git — программа на вашем компьютере. GitHub — сайт, который хранит удалённые репозитории и добавляет командную работу.