$ git push -u origin feat/dedupe-orders
Version Control System Hosting
A Git hosting platform stores the shared copy of your Git repositories and adds everything a team needs around them: pull requests for code review, branch protection, CI/CD, issue tracking, permissions and audit logs. Git itself has none of these; the platform is where collaboration happens.
The pull request flow
A pull request (PR; GitLab calls it a merge request, MR) is a proposal to merge one branch into another. It shows the diff, runs automated checks and collects reviews before anything reaches main.
$ gh pr create --fill
From branch to main through a pull request
- main is protected: nobody pushes to it directly. Changes arrive only through PRs that pass checks and get an approval.
- You create a branch, commit your change to the orders model and push it to the host.
- You open PR #128. Reviewers see the diff, the description and the target branch.
- CI runs automatically on the PR. Lint and unit tests pass, but the dbt uniqueness test fails: merging is blocked.
- You push a fix commit to the same branch. Checks re-run and pass, and a reviewer approves.
- The PR is squash-merged: the branch's changes land on main as one new commit S, the branch is deleted, and the deploy pipeline starts from main.
Comparing the platforms
| GitHub | GitLab | Bitbucket | |
|---|---|---|---|
| Owner | Microsoft | GitLab Inc. | Atlassian |
| Built-in CI/CD | GitHub Actions | GitLab CI/CD | Bitbucket Pipelines |
| Self-hosted option | GitHub Enterprise Server | GitLab Self-Managed (free CE or paid EE) | Bitbucket Data Center |
| Strengths | Largest open-source community, Actions marketplace, Copilot | Single DevOps platform, strong self-hosting, built-in security scanning | Tight Jira and Confluence integration |
| Review unit | Pull request | Merge request | Pull request |
All three speak plain Git, so moving a repository between them is easy; moving CI pipelines, issues and permissions is the real migration work.
What is in this section
- GitHub: Actions, branch protection and rulesets, CODEOWNERS, and the open-source ecosystem.
- GitLab: the all-in-one, self-hostable DevOps platform.
- Bitbucket: Atlassian’s Git host for Jira-centric teams.
Good PR habits
- Small PRs. Under ~400 changed lines get real reviews; 3,000-line PRs get rubber stamps.
- Describe the why and the impact. For data changes, say which tables change, whether a backfill is needed, and what downstream dashboards see.
- Let CI do the nitpicking. Formatters and linters in CI keep reviews focused on logic.
- Require at least one approval and passing checks on
main, and use CODEOWNERS so the right team reviews each folder.