Bitbucket Platform
Bitbucket is Atlassian's Git hosting and code collaboration platform. Its defining strength is deep integration with the Atlassian ecosystem — especially Jira for issue tracking and Trello for lightweight task boards. If your team already plans work in Jira, Bitbucket connects commits, branches, and pull requests directly to your issues, giving you end-to-end traceability from a ticket to the code that resolves it.
Cloud vs Data Center
Bitbucket Cloud: the SaaS offering hosted by Atlassian at bitbucket.org. No maintenance, automatic updates, and built-in Bitbucket Pipelines for CI/CD.
Bitbucket Data Center: self-managed, self-hosted Bitbucket for organizations needing data residency, high availability, and full control. (This replaced the older Bitbucket Server.)
Data Center supports clustering and smart mirroring for large, geographically distributed teams.
Note that Bitbucket Pipelines is a Cloud feature; Data Center typically pairs with Bamboo or external CI tools.
Core features
Repositories: Git hosting with unlimited private repos, branch permissions, and Git LFS support.
Pull Requests: code review with inline comments, required approvals, default reviewers, and merge checks.
Bitbucket Pipelines: built-in CI/CD configured via
bitbucket-pipelines.yml.Branch permissions: fine-grained control over who can push, merge, or delete branches.
Jira integration: link commits, branches, and PRs to Jira issues; transition issues with smart commits.
Code Insights: surface test results, code coverage, and security scan reports inside pull requests.
Deployments: track and visualize releases across environments with deployment permissions.
Snippets and Wikis: shareable code fragments and per-repo documentation.
Pull Requests and code review
Bitbucket uses the term Pull Request (like GitHub). PRs support inline comments, threaded discussions, and merge checks that block a merge until conditions are met — for example, a minimum number of approvals, no unresolved tasks, and passing builds. Default reviewers can be added automatically based on the repository or branch.
Require a minimum number of approvals before merging.
Require all build/pipeline checks to pass (a green build) before merge.
Require that all PR tasks (action items raised in review) are resolved.
Choose merge strategies: merge commit, squash, or fast-forward.
Default reviewers are auto-added so the right people always see relevant changes.
Branch permissions
Branch permissions (the Bitbucket equivalent of branch protection rules) let you lock down important branches. You configure them per repository or project, targeting branches by name, pattern, or branching model type.
Prevent all changes: lock a branch so nobody can push directly.
Prevent deletion: stop
mainor release branches from being deleted.Prevent rewriting history: block force pushes that rewrite commits.
Require pull requests: force all changes through a PR with approvals.
Permissions can be scoped to specific users or groups (e.g. only the release team can merge to
production).
Bitbucket Pipelines (CI/CD)
Bitbucket Pipelines is the built-in CI/CD engine for Bitbucket Cloud. Pipelines are defined in a bitbucket-pipelines.yml file at the repo root. Each step runs in a Docker container, and you organize work using steps (sequential by default) and parallel blocks. Billing is based on build minutes, which vary by plan.
bitbucket-pipelines.yml
image: node:20
definitions:
caches:
npm: ~/.npm
steps:
- step: &build-test
name: Build and Test
caches:
- npm
script:
- npm ci
- npm run build
- npm test
artifacts:
- dist/**
pipelines:
default:
- step: *build-test
branches:
main:
- step: *build-test
- step:
name: Deploy to Production
deployment: production
trigger: manual
script:
- echo "Deploying $BITBUCKET_COMMIT to production"
- ./scripts/deploy.sh
pull-requests:
'**':
- parallel:
- step:
name: Lint
script:
- npm ci
- npm run lint
- step:
name: Unit tests
script:
- npm ci
- npm testdefault runs on every push that does not match another section.
branches define pipelines that run only on specific branches (e.g.
main).pull-requests run pipelines when a PR is opened or updated.
parallel blocks run multiple steps at once to speed up feedback.
deployment tags a step with an environment so it shows in the Deployments view.
Predefined variables like
$BITBUCKET_COMMITand$BITBUCKET_BRANCHare injected automatically.
Plan comparison
Feature | Free | Standard ($3/user/mo) | Premium ($6/user/mo) |
|---|---|---|---|
Users | Up to 5 | Unlimited | Unlimited |
Private repos | Unlimited | Unlimited | Unlimited |
Build minutes (Pipelines) | 50/mo | 2,500/mo | 3,500/mo |
Git LFS storage | 1 GB | 5 GB | 10 GB |
Pull requests & reviews | Yes | Yes | Yes |
Branch permissions | Limited | Yes | Yes |
Merge checks | Basic | Yes | Advanced |
Required merge checks | No | No | Yes |
IP allowlisting | No | No | Yes |
Deployment permissions | No | No | Yes |
Smart mirroring | No | No | Yes |
Support | Community | Standard | Priority |
Jira integration and smart commits
The killer feature of Bitbucket is its native Jira integration. Once a repository is connected to a Jira project, you can reference issue keys in commit messages to automatically link, comment on, log time against, and even transition issues. These are called smart commits.
Smart commit syntax
# Reference an issue (links the commit to JIRA-123) git commit -m "JIRA-123 Fix null check on checkout" # Add a comment to the issue git commit -m "JIRA-123 #comment Refactored the payment service" # Log time worked against the issue git commit -m "JIRA-123 #time 2h 30m Implemented retry logic" # Transition the issue (e.g. move it to Done / close it) git commit -m "JIRA-123 #close Resolved the race condition" # Combine multiple commands in one message git commit -m "JIRA-123 #time 1h #comment Done with tests #close"
#commentadds a comment to the Jira issue from the commit message.#timelogs a work-log entry (using Jira time format like2h 30m).#close,#resolve,#start-review, etc. transition the issue through your workflow.Creating a branch named after an issue key (e.g.
feature/JIRA-123-add-cart) links the branch to the issue automatically.Jira shows the linked branches, commits, PRs, and build/deploy status right on the issue.
Deployments
Pipelines steps tagged with a deployment key feed into Bitbucket's Deployments dashboard, which tracks what version is running in each environment (test, staging, production). On Premium you can add deployment permissions so only authorized users can trigger or approve a production release.
Standard environment tiers:
test,staging, andproduction.See the commit and PR behind every deployment at a glance.
Gate production deploys behind a manual trigger and required approvers.
Deployment variables let you store environment-specific secrets securely.
Bitbucket vs GitHub vs GitLab
Aspect | Bitbucket | GitHub | GitLab |
|---|---|---|---|
Code review unit | Pull Request | Pull Request | Merge Request |
Built-in CI/CD | Pipelines | Actions | GitLab CI/CD |
Issue tracking | Jira (external, deep) | GitHub Issues | GitLab Issues + Epics |
Best for | Atlassian/Jira shops | Open source & ecosystem | All-in-one DevSecOps |
Free tier limit | 5 users | Unlimited users | Unlimited users |
Self-hosting | Data Center | Enterprise Server | Self-managed CE/EE |
CI billing | Build minutes | Action minutes | CI/CD minutes |