Перейти к содержимому
TelegramGitHub

Репозиторий и версии

Знакомая картина в папке аналитика:

revenue.sql
revenue_v2.sql
revenue_v2_final.sql
revenue_v2_final_new.sql
revenue_final_FINAL_Ivan.sql

Какой файл рабочий? Что изменилось между версиями? Кто это поменял? Ответа нет. Когда запрос сломает отчёт, вернуться к хорошей версии трудно.

Git решает это так: файл один, а все его версии хранятся в истории.

ПонятиеЧто это
Репозиторий (repo)Папка проекта вместе с историей всех изменений. Скрытая папка .git внутри хранит историю
Коммит (commit)Снимок проекта в один момент. У него есть автор, время, сообщение и уникальный номер (hash)
Ветка (branch)Отдельная линия изменений. В ней можно пробовать новое и не трогать основной код

История репозитория — это цепочка коммитов:

a1b2c3 Add revenue model
d4e5f6 Filter completed orders
9f8e7d Add refunds to revenue ← сейчас здесь

Вместо revenue_v2_final.sql у вас теперь коммит с понятным сообщением.

Что этоГде работает
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 └─────────────┘
ХранимНе храним
SQL-запросы и модели dbtПароли, ключи API, файл .env
Python-скрипты, DAG для AirflowБольшие данные: CSV, Parquet, дампы баз
Конфиги и инфраструктура (Terraform)Файлы базы данных (.duckdb)
Документацию (README.md)Временные файлы, __pycache__, .DS_Store

Чтобы Git игнорировал файлы, их имена пишут в файл .gitignore. Мы сделаем это в следующем уроке.

  1. Чем коммит отличается от файла revenue_v2.sql?
  2. Нужен ли интернет для git commit? А для git push?
  3. Чем Git отличается от GitHub?
Ответы
  1. Коммит — снимок всего проекта с автором, временем и сообщением. Все версии лежат в одной истории, а не в разных файлах.
  2. Для commit интернет не нужен. Для push нужен.
  3. Git — программа на вашем компьютере. GitHub — сайт, который хранит удалённые репозитории и добавляет командную работу.