Основы управления версиями
Когда вы разрабатываете в интерфейсе командной строки (CLI) или в интегрированной среде разработки Cloud (Studio IDE), вы можете напрямую использовать Git для контроля версий вашего кода. Чтобы использовать контроль версий, убедитесь, что вы подключены к репозиторию Git в CLI или Studio IDE.
Вы можете создать отдельную ветку для разработки и внесения изменений. Изменения, которые вы вносите, не сливаются с основной веткой в вашем подключенном репозитории (обычно называемой веткой main), если они не проходят тесты успешно. Это помогает поддерживать организованность кода и повышает продуктивность, делая процесс разработки более плавным.
Вы можете прочитать больше о терминологии git ниже, а также ознакомиться с документацией GitHub.
Ниже приведены некоторые общие термины git, с которыми вы можете столкнуться при разработке:
| Название | Определение |
|---|
| Repository or repo | Репозиторий — это директория, в которой хранятся все файлы, папки и содержимое, необходимые для вашего проекта. Его можно рассматривать как объектную базу данных проекта, в которой хранится всё: от самих файлов до их версий, коммитов и удалений. Репозитории не привязаны к конкретному пользователю и могут быть расшарены и скопированы. |
| Branch | Ветка — это параллельная версия репозитория. Она находится внутри репозитория, но не влияет на основную (main) ветку, что позволяет свободно работать, не нарушая «живую» версию. Когда вы внесли все необходимые изменения, вы можете слить свою ветку обратно в основную ветку, чтобы опубликовать изменения. |
| Checkout | Команда checkout используется для создания новой ветки, переключения текущей рабочей ветки на другую ветку или для переключения на другую версию файла из другой ветки. |
| Commit | Коммит — это изменение файла (или набора файлов), сделанное пользователем. Когда вы делаете коммит, чтобы сохранить свою работу, Git создаёт уникальный идентификатор, который позволяет зафиксировать конкретные изменения, а также информацию о том, кто и когда их сделал. Коммиты обычно содержат сообщение коммита — краткое описание внесённых изменений. |
| main | Основная, базовая ветка всех репозиториев. Все зафиксированные и принятые изменения должны находиться в ветке main.
В Studio IDE ветка main защищена. Это означает, что вы не можете напрямую редактировать, форматировать или проверять файлы, а также выполнять команды dbt в защищённой основной git-ветке при использовании пользовательского интерфейса dbt platform. Обратите внимание, что вся Git-активность в Studio IDE подчиняется правам, заданным в настроенных учётных данных, а также правилам, настроенным у удалённого Git‑провайдера (например, защита веток в GitHub или GitLab). Поскольку Studio IDE не позволяет делать коммиты в защищённую ветку, вы можете зафиксировать изменения в новой ветке. |
| Merge | Merge — это операция, которая берёт изменения из одной ветки и добавляет их в другую (обычно в ветку main). Как правило, такие коммиты сначала предлагаются через pull request, а затем сливаются мейнтейнером. |
| Pull Request | Если кто-то изменил код в отдельной ветке проекта и хочет, чтобы эти изменения были рассмотрены и добавлены в ветку main, он может создать pull request. Pull request предлагает мейнтейнерам репозитория просмотреть сделанные коммиты и, если они приемлемы, слить изменения «вверх по потоку». Pull происходит в момент добавления изменений в основную ветку. |
| Push | Операция push обновляет удалённую ветку коммитами, сделанными в текущей ветке. По сути, вы «отправляете» свои изменения в удалённый репозиторий. |
| Remote | Это версия репозитория или ветки, размещённая на сервере. Удалённые версии могут быть связаны с локальными клонами, чтобы изменения можно было синхронизировать. |
Вы можете выполнять задачи git с помощью кнопки git в Studio IDE. Ниже приведены описания каждой команды кнопки git и того, что они делают:
| Название | Действия |
|---|
| Abort merge | Эта опция позволяет отменить слияние (merge), в котором возникли конфликты. Будьте осторожны с этим действием, так как все изменения будут сброшены и эту операцию нельзя отменить. Перед началом слияния обязательно закоммитьте или сохраните все свои изменения. |
| Change branch | Эта опция позволяет переключаться между ветками (checkout). |
| Commit | Коммит — это отдельное изменение файла (или набора файлов). Когда вы делаете коммит для сохранения своей работы, Git создаёт уникальный идентификатор (также известный как «SHA» или «hash»), который позволяет зафиксировать, какие именно изменения были внесены, кем и когда. Коммиты обычно содержат сообщение коммита — краткое описание внесённых изменений. В дальнейшем, когда вы будете вносить изменения в код, их также потребуется коммитить. |
| Create new branch | Эта опция позволяет создать новую ветку на основе базовой ветки и работать над проектом в ней. Вы заметите, что после инициализации проекта основная ветка защищена.
Это означает, что вы не можете напрямую редактировать, форматировать или линтить файлы, а также выполнять команды dbt в защищённой основной git-ветке. Когда всё будет готово, вы можете закоммитить изменения в новую ветку. |
| Initialize your project | Это выполняется при первоначальной настройке проекта. Инициализация проекта создаёт все необходимые директории и файлы в пустом репозитории с использованием стартового проекта dbt. Примечание: эта опция не отображается, если репозиторий не является полностью пустым (например, если в нём уже есть файл README). После нажатия Initialize your project нажмите Commit, чтобы завершить настройку проекта. |
| Open pull request | Эта опция позволяет открыть pull request в Git, чтобы коллеги могли просмотреть изменения перед их слиянием в базовую ветку. |
| Pull changes from main | Эта опция доступна, если вы находитесь в любой локальной ветке, которая отстаёт от удалённой версии базовой ветки или от удалённой версии текущей ветки. |
| Pull from remote | Эта опция доступна, если вы находитесь в локальной базовой ветке и в удалённую версию ветки недавно были отправлены изменения. Получение изменений из удалённого репозитория позволяет загрузить самую актуальную версию базовой ветки. |
| Rollback to remote | Сброс изменений в репозитории напрямую из Studio IDE. Вы можете откатить репозиторий к более раннему состоянию на основе удалённой копии. Для этого нажмите на иконку с тремя точками в правом нижнем углу Studio IDE и выберите Rollback to remote. |
| Refresh git state | Эта опция позволяет подтянуть новые ветки из другого удалённого репозитория в вашу локальную ветку с помощью одной команды. |
Конфликты слияния часто возникают, когда несколько пользователей одновременно вносят изменения в один и тот же раздел одного и того же файла. В таких ситуациях Git сложно определить, какие изменения следует сохранить.
Обратитесь к разделу merge conflicts, чтобы узнать, как разрешать конфликты слияния.
dbt использует глобальный файл .gitignore, который автоматически исключает следующие подкаталоги из вашего git-репозитория, чтобы обеспечить корректную и стабильную работу:
dbt_packages/
logs/
target/
Это включение использует завершающий слэш, делая эти строки в файле .gitignore действующими как 'подстановочные знаки для папок', которые предотвращают отслеживание любых файлов или папок внутри них git. Вы также можете указать дополнительные исключения по мере необходимости для вашего проекта.
Однако этот глобальный .gitignore не применяется напрямую к пользователям dbt Core и Cloud CLI. Поэтому, если вы работаете с dbt Core или Cloud CLI, вам необходимо вручную добавить три строки, упомянутые ранее, в файл .gitignore вашего проекта.
Важно отметить, что хотя некоторые git‑провайдеры создают базовый файл .gitignore при создании репозитория, в нём часто отсутствуют необходимые исключения для dbt. Это означает, что вам нужно самостоятельно убедиться, что три упомянутые ранее строки добавлены в .gitignore, чтобы dbt корректно работал.
-
Проекты dbt, созданные после 1 декабря 2022 года — Если вы используете кнопку Initialize dbt Project в Studio IDE для создания нового пустого dbt‑проекта, dbt автоматически добавит файл .gitignore с необходимыми записями. Если файл .gitignore уже существует, нужные папки будут добавлены в конец существующего файла.
-
Миграция проекта с dbt Core на dbt — Убедитесь, что файл .gitignore содержит необходимые записи. dbt Core не взаимодействует с git, поэтому dbt не добавляет и не проверяет записи в .gitignore автоматически. Кроме того, если репозиторий уже содержит dbt‑код и не требует инициализации, dbt не будет добавлять отсутствующие записи в файл .gitignore.
:::
Для получения дополнительной информации или советов по устранению неполадок, пожалуйста, обратитесь к подробному FAQ.