{"id":4710,"date":"2025-08-21T11:08:02","date_gmt":"2025-08-21T11:08:02","guid":{"rendered":"https:\/\/uplatz.com\/blog\/?p=4710"},"modified":"2025-08-30T11:46:38","modified_gmt":"2025-08-30T11:46:38","slug":"bitbucket-pocket-book","status":"publish","type":"post","link":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/","title":{"rendered":"Bitbucket Pocket Book"},"content":{"rendered":"<p><!-- ############################################################ --><br \/>\n<!-- Bitbucket Pocket Book \u2014 Uplatz (Single Column, ~60 Cards, Colored Sections) --><\/p>\n<div style=\"margin: 16px 0;\">\n<style>\n  \/* Scope *\/<br \/>\n  .wp-bb-pb{font-family:Arial,Helvetica,sans-serif;max-width:980px;margin:0 auto;}<\/p>\n<p>  \/* Gradient header *\/<br \/>\n  .wp-bb-pb .heading{<br \/>\n    background:linear-gradient(135deg,#22c55e,#3b82f6);<br \/>\n    color:#ffffff;padding:22px;border-radius:18px;text-align:center;<br \/>\n    margin-bottom:26px;box-shadow:0 10px 24px rgba(0,0,0,.10);border:1px solid rgba(255,255,255,.22)<br \/>\n  }<br \/>\n  .wp-bb-pb .heading h2{margin:0;font-size:1.82rem;font-weight:800;letter-spacing:.2px;line-height:1.15}<br \/>\n  .wp-bb-pb .heading p{margin:8px 0 0;font-size:.96rem;opacity:.95}<\/p>\n<p>  \/* Section titles (base) *\/<br \/>\n  .wp-bb-pb .section-title{<br \/>\n    margin:26px 0 14px;padding:12px 16px;border-left:8px solid #2563eb;<br \/>\n    border-radius:12px;font-weight:800;color:#0f172a;font-size:1.02rem;<br \/>\n    box-shadow:0 2px 8px rgba(0,0,0,.05);border:1px solid #e2e8f0<br \/>\n  }<\/p>\n<p>  \/* Colored section bars (apply one per section) *\/<br \/>\n  .wp-bb-pb .color-1{background:linear-gradient(135deg,#dcfce7,#e0f2fe);border-left-color:#22c55e}<br \/>\n  .wp-bb-pb .color-2{background:linear-gradient(135deg,#fffbeb,#e9d5ff);border-left-color:#f59e0b}<br \/>\n  .wp-bb-pb .color-3{background:linear-gradient(135deg,#fee2e2,#dbeafe);border-left-color:#ef4444}<br \/>\n  .wp-bb-pb .color-4{background:linear-gradient(135deg,#ecfeff,#f5f3ff);border-left-color:#06b6d4}<br \/>\n  .wp-bb-pb .color-5{background:linear-gradient(135deg,#f1f5f9,#ede9fe);border-left-color:#475569}<br \/>\n  .wp-bb-pb .color-6{background:linear-gradient(135deg,#f0fdf4,#fef3c7);border-left-color:#10b981}<br \/>\n  .wp-bb-pb .color-7{background:linear-gradient(135deg,#fff7ed,#e2e8f0);border-left-color:#fb923c}<br \/>\n  .wp-bb-pb .color-8{background:linear-gradient(135deg,#e0e7ff,#fee2e2);border-left-color:#6366f1}<\/p>\n<p>  \/* Cards *\/<br \/>\n  .wp-bb-pb .card{<br \/>\n    background:#fff;border-left:6px solid #2563eb;padding:16px;border-radius:14px;<br \/>\n    box-shadow:0 6px 14px rgba(0,0,0,.06);border:1px solid #e5e7eb;margin-bottom:16px;<br \/>\n    transition:transform .12s ease,box-shadow .12s ease<br \/>\n  }<br \/>\n  .wp-bb-pb .card:hover{transform:translateY(-2px);box-shadow:0 12px 22px rgba(0,0,0,.08)}<br \/>\n  .wp-bb-pb .card h3{margin:0 0 10px;font-size:1.08rem;color:#0f172a}<br \/>\n  .wp-bb-pb .card p{margin:0;font-size:.96rem;color:#334155;line-height:1.62}<\/p>\n<p>  \/* Color helpers (optional for card variety) *\/<br \/>\n  .bg-blue{border-left-color:#2563eb;background:#f0f9ff}<br \/>\n  .bg-green{border-left-color:#16a34a;background:#f0fdf4}<br \/>\n  .bg-amber{border-left-color:#f59e0b;background:#fffbeb}<br \/>\n  .bg-violet{border-left-color:#7c3aed;background:#f5f3ff}<br \/>\n  .bg-rose{border-left-color:#e11d48;background:#fff1f2}<br \/>\n  .bg-cyan{border-left-color:#0891b2;background:#ecfeff}<br \/>\n  .bg-indigo{border-left-color:#4f46e5;background:#eef2ff}<br \/>\n  .bg-emerald{border-left-color:#059669;background:#ecfdf5}<br \/>\n  .bg-slate{border-left-color:#334155;background:#f8fafc}<\/p>\n<p>  \/* Mono + code *\/<br \/>\n  .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}<br \/>\n  .wp-bb-pb code{background:#f1f5f9;padding:0 4px;border-radius:4px;border:1px solid #e2e8f0}<br \/>\n  .wp-bb-pb pre{background:#f5f5f5;color:#111827;border:1px solid #e5e7eb;padding:12px;border-radius:10px;overflow:auto;font-size:.92rem;line-height:1.55}<\/p>\n<p>  .muted{color:#64748b}<br \/>\n  .tight ul{margin:0;padding-left:18px}<br \/>\n  .tight li{margin:4px 0}<br \/>\n  .q{font-weight:700}<br \/>\n<\/style>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-5066\" src=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket-1024x576.jpg\" alt=\"\" width=\"840\" height=\"473\" srcset=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket-1024x576.jpg 1024w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket-300x169.jpg 300w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket-768x432.jpg 768w, https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket.jpg 1280w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<div class=\"wp-bb-pb\">\n<div class=\"heading\">\n<h2>Bitbucket Pocket Book \u2014 Uplatz<\/h2>\n<p>~60 deep-dive flashcards \u2022 Single column \u2022 Repos &amp; Branching \u2022 PRs &amp; Reviews \u2022 Pipelines CI\/CD \u2022 Workspaces &amp; Permissions \u2022 Security \u2022 Admin \u2022 Interview Q&amp;A<\/p>\n<p class=\"muted\">Cheat-friendly explanations \u2022 Readable Git\/CI snippets \u2022 Production-oriented tips<\/p>\n<\/div>\n<p><!-- ===================== SECTION 1 ===================== --><\/p>\n<div class=\"section-title color-1\">Section 1 \u2014 Fundamentals<\/div>\n<div class=\"card bg-blue\">\n<h3>1) What is Bitbucket?<\/h3>\n<p>Git hosting by Atlassian with pull requests, code review, and CI\/CD via Pipelines. Tight integration with Jira, Trello, and the Atlassian ecosystem.<\/p>\n<pre><code class=\"mono\">git --version\r\ngit config --global user.name \"Your Name\"\r\ngit config --global user.email you@example.com<\/code><\/pre>\n<\/div>\n<div class=\"card bg-green\">\n<h3>2) Workspace \u2192 Project \u2192 Repository<\/h3>\n<p><b>Workspace<\/b> groups everything for your org; <b>Project<\/b> organizes repos; <b>Repository<\/b> stores code, issues, PRs, and pipelines.<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>3) SSH vs HTTPS<\/h3>\n<p>HTTPS is simple; SSH avoids password prompts and supports fine-grained key management (per device\/service).<\/p>\n<pre><code class=\"mono\">ssh-keygen -t ed25519 -C \"you@example.com\"\r\n# Add public key in Bitbucket SSH keys<\/code><\/pre>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>4) Clone &amp; Remotes<\/h3>\n<pre><code class=\"mono\">git clone git@bitbucket.org:workspace\/repo.git\r\ngit remote -v\r\ngit remote add upstream git@bitbucket.org:workspace\/parent.git<\/code><\/pre>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>5) Branching Strategies<\/h3>\n<p><b>Trunk-based<\/b> (short-lived branches), <b>Gitflow<\/b> (feature\/release\/hotfix), or <b>Release train<\/b>. Pick one and automate checks.<\/p>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>6) Naming Conventions<\/h3>\n<p><code>feature\/<\/code>, <code>bugfix\/<\/code>, <code>hotfix\/<\/code>, <code>release\/<\/code>, include Jira key (e.g., <code>PROJ-123<\/code>) for traceability.<\/p>\n<\/div>\n<div class=\"card bg-indigo\">\n<h3>7) LFS (Large Files)<\/h3>\n<p>Track binaries with Git LFS to keep repo small; avoid committing build artifacts.<\/p>\n<pre><code class=\"mono\">git lfs install\r\ngit lfs track \"*.psd\"<\/code><\/pre>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>8) .gitignore &amp; Attributes<\/h3>\n<p>Keep repos clean with language-specific ignores; use <code>.gitattributes<\/code> for line endings\/merge drivers.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 2 ===================== --><\/p>\n<div class=\"section-title color-2\">Section 2 \u2014 Repos &amp; Branching<\/div>\n<div class=\"card bg-blue\">\n<h3>9) Create Repo<\/h3>\n<p>From UI or via import\/mirror. Initialize locally, then push the default branch.<\/p>\n<pre><code class=\"mono\">git init -b main\r\ngit add .\r\ngit commit -m \"chore: initial commit\"\r\ngit remote add origin git@bitbucket.org:workspace\/repo.git\r\ngit push -u origin main<\/code><\/pre>\n<\/div>\n<div class=\"card bg-green\">\n<h3>10) Default Branch<\/h3>\n<p>Set <code>main<\/code> (or equivalent) and protect it with branch restrictions, required approvals, and CI checks.<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>11) Branch Permissions<\/h3>\n<p>Restrict who can push to protected branches; require PRs with passing builds and approvals.<\/p>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>12) Merge Strategies<\/h3>\n<p><b>Squash<\/b> (clean history), <b>Merge commit<\/b> (preserve), <b>Fast-forward<\/b> (linear). Choose per repo; document when to use each.<\/p>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>13) Tags &amp; Releases<\/h3>\n<p>Use annotated tags for releases and changelogs.<\/p>\n<pre><code class=\"mono\">git tag -a v1.2.0 -m \"release: 1.2.0\"\r\ngit push origin v1.2.0<\/code><\/pre>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>14) Forks &amp; Upstream Sync<\/h3>\n<p>Contribute via forks; keep in sync with <code>upstream<\/code> remote.<\/p>\n<pre><code class=\"mono\">git fetch upstream\r\ngit rebase upstream\/main<\/code><\/pre>\n<\/div>\n<div class=\"card bg-indigo\">\n<h3>15) Monorepo Tips<\/h3>\n<p>Use sparse-checkout, shared CI templates, and path-based pipelines; enforce codeowners by directory.<\/p>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>16) Commit Messages<\/h3>\n<p>Conventional commits (<code>feat:<\/code>, <code>fix:<\/code>, <code>chore:<\/code>) + Jira key \u2192 automatic changelogs and traceability.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 3 ===================== --><\/p>\n<div class=\"section-title color-3\">Section 3 \u2014 Pull Requests &amp; Code Review<\/div>\n<div class=\"card bg-blue\">\n<h3>17) Create a PR<\/h3>\n<p>Push your branch, open PR, add title\/description, link Jira issue, and set reviewers.<\/p>\n<\/div>\n<div class=\"card bg-green\">\n<h3>18) PR Templates<\/h3>\n<p>Store a checklist in <code>PULL_REQUEST_TEMPLATE.md<\/code> (tests, docs, screenshots). Improves consistency.<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>19) Default Reviewers<\/h3>\n<p>Configure per project\/repo to auto-assign domain owners for PRs touching specific paths.<\/p>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>20) Merge Checks<\/h3>\n<p>Enforce: min approvals, passing Pipelines status, all tasks resolved, no conflicts, up-to-date with target branch.<\/p>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>21) Inline Comments &amp; Suggestions<\/h3>\n<p>Provide actionable feedback; use code suggestions; resolve threads when addressed.<\/p>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>22) PR Etiquette<\/h3>\n<p>Small PRs (&lt; 300 lines), clear context, test coverage, avoid \u201cdrive-by\u201d refactors; reviewers respond within SLA.<\/p>\n<\/div>\n<div class=\"card bg-indigo\">\n<h3>23) Jira Smart Commits<\/h3>\n<p>Include issue keys in commits\/PR titles to transition issues, log time, or leave comments from Git activity.<\/p>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>24) Approvals &amp; Re-approvals<\/h3>\n<p>Major changes after approval should reset\/re-request reviews; automate via merge checks.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 4 ===================== --><\/p>\n<div class=\"section-title color-4\">Section 4 \u2014 Pipelines (CI\/CD)<\/div>\n<div class=\"card bg-blue\">\n<h3>25) Enable Pipelines<\/h3>\n<p>Add <code>bitbucket-pipelines.yml<\/code> at repo root and toggle Pipelines in repo settings.<\/p>\n<pre><code class=\"mono\">image: node:20\r\npipelines:\r\n  default:\r\n    - step:\r\n        name: Build &amp; Test\r\n        caches: [node]\r\n        script:\r\n          - npm ci\r\n          - npm test\r\n        artifacts:\r\n          - dist\/**<\/code><\/pre>\n<\/div>\n<div class=\"card bg-green\">\n<h3>26) Caches &amp; Artifacts<\/h3>\n<p>Caches persist between runs (e.g., <code>node<\/code>, <code>pip<\/code>); artifacts move build outputs to later steps (or downloads).<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>27) Pipes (prebuilt steps)<\/h3>\n<p>Reusable actions like Docker build\/push, AWS deploy, Slack notify.<\/p>\n<pre><code class=\"mono\">script:\r\n  - pipe: atlassian\/docker-build:1.6.0\r\n    variables:\r\n      DOCKERFILE: Dockerfile\r\n      IMAGE_NAME: myapp<\/code><\/pre>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>28) Deployments &amp; Environments<\/h3>\n<p>Define dev\/test\/prod with environment variables and approvals; track releases per environment.<\/p>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>29) Manual &amp; Custom Pipelines<\/h3>\n<p>Trigger ad-hoc jobs (e.g., migrations, rollbacks) from the UI.<\/p>\n<pre><code class=\"mono\">custom:\r\n  migrate-db:\r\n    - step:\r\n        name: Migrate\r\n        script: [\"npm run migrate\"]<\/code><\/pre>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>30) Self-Hosted Runners<\/h3>\n<p>Run steps on your own hardware for private networks, GPUs, or custom tooling.<\/p>\n<\/div>\n<div class=\"card bg-indigo\">\n<h3>31) Parallel Steps &amp; Fan-out<\/h3>\n<p>Split tests\/builds across multiple steps to reduce time-to-green.<\/p>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>32) Docker-in-Docker<\/h3>\n<p>Build images in Pipelines; use Docker service and enable privileged mode when required.<\/p>\n<\/div>\n<div class=\"card bg-slate\">\n<h3>33) Monorepo Pipelines<\/h3>\n<p>Use conditionals on changed paths and shared templates to run only necessary jobs.<\/p>\n<\/div>\n<div class=\"card bg-blue\">\n<h3>34) Example: Python<\/h3>\n<pre><code class=\"mono\">image: python:3.12\r\npipelines:\r\n  default:\r\n    - step:\r\n        name: Test\r\n        caches: [pip]\r\n        script:\r\n          - pip install -r requirements.txt\r\n          - pytest -q<\/code><\/pre>\n<\/div>\n<p><!-- ===================== SECTION 5 ===================== --><\/p>\n<div class=\"section-title color-5\">Section 5 \u2014 Workspaces, Permissions &amp; Integrations<\/div>\n<div class=\"card bg-green\">\n<h3>35) Workspaces<\/h3>\n<p>Top-level org boundary for members, groups, default permissions, and billing; group repos into projects.<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>36) Repo Permissions<\/h3>\n<p>Grant read\/write\/admin; prefer groups over individuals; review access quarterly.<\/p>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>37) Branch Restrictions<\/h3>\n<p>Prevent force-push\/deletes; require PRs, approvals, and passing builds on protected branches like <code>main<\/code>.<\/p>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>38) App Passwords &amp; Tokens<\/h3>\n<p>Use app passwords or OAuth tokens for automation; scope minimally; rotate regularly; store in Pipelines variables.<\/p>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>39) Webhooks<\/h3>\n<p>Trigger external systems on push\/PR events (CI, chat notifications, deployments).<\/p>\n<\/div>\n<div class=\"card bg-indigo\">\n<h3>40) Jira &amp; Trello<\/h3>\n<p>Link repos to projects\/boards; surface PRs and build status on issues\/cards; use issue keys in branches\/commits.<\/p>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>41) Codeowners-by-Path (pattern)<\/h3>\n<p>Enforce domain reviews by mapping directories \u2192 default reviewers; pair with merge checks.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 6 ===================== --><\/p>\n<div class=\"section-title color-6\">Section 6 \u2014 Security &amp; Compliance<\/div>\n<div class=\"card bg-blue\">\n<h3>42) 2FA &amp; SSO<\/h3>\n<p>Enforce two-factor auth and SSO for workspace users; remove stale accounts promptly.<\/p>\n<\/div>\n<div class=\"card bg-green\">\n<h3>43) Signed Commits<\/h3>\n<p>Use GPG\/SSH signing to verify authorship; enforce on protected branches for higher integrity.<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>44) Secrets in CI<\/h3>\n<p>Store credentials as secured variables at repo\/workspace level; never commit secrets; rotate and audit usage.<\/p>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>45) Dependency &amp; SAST Scans<\/h3>\n<p>Run SCA\/SAST in Pipelines (e.g., OSS indexers, Semgrep, Snyk). Fail builds on critical issues; create Jira tickets automatically.<\/p>\n<\/div>\n<div class=\"card bg-rose\">\n<h3>46) Required Status Checks<\/h3>\n<p>Only allow merges when CI passes, approvals met, and tasks resolved; block direct pushes to protected branches.<\/p>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>47) Least Privilege<\/h3>\n<p>Group-based permissions, per-environment deploy keys, and scoped tokens; audit access and logs regularly.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 7 ===================== --><\/p>\n<div class=\"section-title color-7\">Section 7 \u2014 Admin, Migration &amp; Scaling<\/div>\n<div class=\"card bg-indigo\">\n<h3>48) Import\/Migrate<\/h3>\n<p>Import from GitHub\/GitLab or push existing repos; preserve history and tags.<\/p>\n<pre><code class=\"mono\">git remote set-url origin git@bitbucket.org:new-ws\/repo.git\r\ngit push --all\r\ngit push --tags<\/code><\/pre>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>49) Mirrors &amp; Backups (pattern)<\/h3>\n<p>Maintain a read-only mirror (another provider\/self-hosted) via CI job that pushes all refs; also keep regular bare clones.<\/p>\n<\/div>\n<div class=\"card bg-slate\">\n<h3>50) Repo Size Management<\/h3>\n<p>Remove large blobs (BFG), enable LFS, and avoid committing artifacts. Educate teams with pre-commit hooks.<\/p>\n<\/div>\n<div class=\"card bg-blue\">\n<h3>51) Monorepo Scaling<\/h3>\n<p>Enforce ownership by directory, split pipelines per path, cache dependencies per package, and use sparse-checkout for devs.<\/p>\n<\/div>\n<div class=\"card bg-green\">\n<h3>52) CI Performance<\/h3>\n<p>Cache deps, parallelize tests, reuse layers for Docker builds, and run only affected jobs per change.<\/p>\n<\/div>\n<div class=\"card bg-amber\">\n<h3>53) Audit &amp; Logs<\/h3>\n<p>Review access and pipeline logs; set alerts on unusual pushes, failed auth, or excessive pipeline usage.<\/p>\n<\/div>\n<div class=\"card bg-violet\">\n<h3>54) Branch Lifecycles<\/h3>\n<p>Auto-delete merged branches; stale branch policy with reminders or cleanup jobs.<\/p>\n<\/div>\n<p><!-- ===================== SECTION 8 ===================== --><\/p>\n<div class=\"section-title color-8\">Section 8 \u2014 Patterns &amp; Interview Q&amp;A<\/div>\n<div class=\"card bg-rose\">\n<h3>55) Pattern \u2014 Trunk + Feature Flags<\/h3>\n<p>Ship small PRs behind flags; keep trunk releasable; CI gates and canary deployments cut risk.<\/p>\n<\/div>\n<div class=\"card bg-cyan\">\n<h3>56) Pattern \u2014 Protected Environments<\/h3>\n<p>Dev auto-deploy, Staging requires approval, Prod requires approvals + manual step; artifact promotion not rebuilds.<\/p>\n<\/div>\n<div class=\"card bg-indigo\">\n<h3>57) Interview \u2014 Gitflow vs Trunk?<\/h3>\n<p><span class=\"q\">Answer:<\/span> Trunk for continuous delivery and fast feedback; Gitflow for strict release cadence and long-lived support branches.<\/p>\n<\/div>\n<div class=\"card bg-emerald\">\n<h3>58) Interview \u2014 Speed up slow CI?<\/h3>\n<p><span class=\"q\">Answer:<\/span> Cache deps, split jobs, run changed-path tests only, prebuild Docker base, and fail-fast on lint\/type checks.<\/p>\n<\/div>\n<div class=\"card bg-slate\">\n<h3>59) Interview \u2014 Secure secrets?<\/h3>\n<p><span class=\"q\">Answer:<\/span> Store as protected variables, restrict to environments, rotate regularly, and scan repo history for exposure.<\/p>\n<\/div>\n<div class=\"card bg-blue\">\n<h3>60) Production Checklist<\/h3>\n<p>Protected branches &amp; merge checks, required reviews, Pipelines with gates, secrets in variables, signed commits, backups\/mirrors, and on-call runbooks.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bitbucket Pocket Book \u2014 Uplatz ~60 deep-dive flashcards \u2022 Single column \u2022 Repos &amp; Branching \u2022 PRs &amp; Reviews \u2022 Pipelines CI\/CD \u2022 Workspaces &amp; Permissions \u2022 Security \u2022 Admin <span class=\"readmore\"><a href=\"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/\">Read More &#8230;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2534,2462],"tags":[],"class_list":["post-4710","post","type-post","status-publish","format-standard","hentry","category-bitbucket","category-pocket-book"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bitbucket Pocket Book | Uplatz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bitbucket Pocket Book | Uplatz Blog\" \/>\n<meta property=\"og:description\" content=\"Bitbucket Pocket Book \u2014 Uplatz ~60 deep-dive flashcards \u2022 Single column \u2022 Repos &amp; Branching \u2022 PRs &amp; Reviews \u2022 Pipelines CI\/CD \u2022 Workspaces &amp; Permissions \u2022 Security \u2022 Admin Read More ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/\" \/>\n<meta property=\"og:site_name\" content=\"Uplatz Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-21T11:08:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-30T11:46:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"uplatzblog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:site\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"uplatzblog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/\"},\"author\":{\"name\":\"uplatzblog\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\"},\"headline\":\"Bitbucket Pocket Book\",\"datePublished\":\"2025-08-21T11:08:02+00:00\",\"dateModified\":\"2025-08-30T11:46:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/\"},\"wordCount\":1032,\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Bitbucket-1024x576.jpg\",\"articleSection\":[\"Bitbucket\",\"Pocket Book\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/\",\"name\":\"Bitbucket Pocket Book | Uplatz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Bitbucket-1024x576.jpg\",\"datePublished\":\"2025-08-21T11:08:02+00:00\",\"dateModified\":\"2025-08-30T11:46:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#primaryimage\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Bitbucket.jpg\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Bitbucket.jpg\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/bitbucket-pocket-book\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bitbucket Pocket Book\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"name\":\"Uplatz Blog\",\"description\":\"Uplatz is a global IT Training &amp; Consulting company\",\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\",\"name\":\"uplatz.com\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"width\":1280,\"height\":800,\"caption\":\"uplatz.com\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Uplatz-1077816825610769\\\/\",\"https:\\\/\\\/x.com\\\/uplatz_global\",\"https:\\\/\\\/www.instagram.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\",\"name\":\"uplatzblog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"caption\":\"uplatzblog\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bitbucket Pocket Book | Uplatz Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/","og_locale":"en_US","og_type":"article","og_title":"Bitbucket Pocket Book | Uplatz Blog","og_description":"Bitbucket Pocket Book \u2014 Uplatz ~60 deep-dive flashcards \u2022 Single column \u2022 Repos &amp; Branching \u2022 PRs &amp; Reviews \u2022 Pipelines CI\/CD \u2022 Workspaces &amp; Permissions \u2022 Security \u2022 Admin Read More ...","og_url":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/","og_site_name":"Uplatz Blog","article_publisher":"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","article_published_time":"2025-08-21T11:08:02+00:00","article_modified_time":"2025-08-30T11:46:38+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket.jpg","type":"image\/jpeg"}],"author":"uplatzblog","twitter_card":"summary_large_image","twitter_creator":"@uplatz_global","twitter_site":"@uplatz_global","twitter_misc":{"Written by":"uplatzblog","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#article","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/"},"author":{"name":"uplatzblog","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e"},"headline":"Bitbucket Pocket Book","datePublished":"2025-08-21T11:08:02+00:00","dateModified":"2025-08-30T11:46:38+00:00","mainEntityOfPage":{"@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/"},"wordCount":1032,"publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"image":{"@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#primaryimage"},"thumbnailUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket-1024x576.jpg","articleSection":["Bitbucket","Pocket Book"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/","url":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/","name":"Bitbucket Pocket Book | Uplatz Blog","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#primaryimage"},"image":{"@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#primaryimage"},"thumbnailUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket-1024x576.jpg","datePublished":"2025-08-21T11:08:02+00:00","dateModified":"2025-08-30T11:46:38+00:00","breadcrumb":{"@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#primaryimage","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket.jpg","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2025\/08\/Bitbucket.jpg","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/uplatz.com\/blog\/bitbucket-pocket-book\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uplatz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Bitbucket Pocket Book"}]},{"@type":"WebSite","@id":"https:\/\/uplatz.com\/blog\/#website","url":"https:\/\/uplatz.com\/blog\/","name":"Uplatz Blog","description":"Uplatz is a global IT Training &amp; Consulting company","publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uplatz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uplatz.com\/blog\/#organization","name":"uplatz.com","url":"https:\/\/uplatz.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","width":1280,"height":800,"caption":"uplatz.com"},"image":{"@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","https:\/\/x.com\/uplatz_global","https:\/\/www.instagram.com\/","https:\/\/www.linkedin.com\/company\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz"]},{"@type":"Person","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e","name":"uplatzblog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","caption":"uplatzblog"}}]}},"_links":{"self":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/comments?post=4710"}],"version-history":[{"count":2,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4710\/revisions"}],"predecessor-version":[{"id":5067,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4710\/revisions\/5067"}],"wp:attachment":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/media?parent=4710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/categories?post=4710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/tags?post=4710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}