$ 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 · protected: needs passing checks + 1 approval a1b2c3 d4e5feat/dedupe-orders PR #128 Deduplicate orders on order_idfeat/dedupe-orders → main · 2 commits · +38 −4 lint ........ PASSunit tests .. PASSdbt build ... FAIL unique(order_id) f6dbt build ... PASSreview: approved1 comment resolved Ssquash-merged · branch deleted
  1. main is protected: nobody pushes to it directly. Changes arrive only through PRs that pass checks and get an approval.
  2. You create a branch, commit your change to the orders model and push it to the host.
  3. You open PR #128. Reviewers see the diff, the description and the target branch.
  4. CI runs automatically on the PR. Lint and unit tests pass, but the dbt uniqueness test fails: merging is blocked.
  5. You push a fix commit to the same branch. Checks re-run and pass, and a reviewer approves.
  6. 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.

Learning Resources