GitHub PR Checkout: দুইটা কাজের Method

প্রথমবার যখন কেউ আমাকে তাঁর Pull Request Review করতে বলেছিলাম, এক Tab-এ GitHub Open করলাম, আরেক Tab-এ Slack। বুঝলাম Code Actually Run করব কীভাবে সেটা জানি না। শেষ পর্যন্ত Manually তাঁর Fork Clone করলাম, Branch Name খুঁজলাম, আর Local Repo Mess করে ফেললাম। এর চেয়ে ভালো কোনো Way ছিল।

পরে দুইটা Way পেলাম — আর কয়েক বছর ধরে দুইটাই Use করছি।

Code Review-এর Problem

GitHub-এর Web Interface ছোটখাটো Diffs-এর জন্য চলে। কিন্তু Code Actually Run করতে হলে — সেই Endpoint Test করতে, UI Fix Verify করতে, বা Debug করতে কেন Test Fail করছে — তখন PR Locally দরকার।

Default Workflow টা Awkward: Author-কে Message করে Fork URL আর Branch Name নেওয়া, নাহলে GitHub-এর UI-তে Click করে খোঁজা। দুইটাই Slow।

আমি যা চেয়েছিলাম তা: PR Number টাইপ করো, Code পাও।

Method 1: Git Config (আমার 80% Review)

.git/config-এ [remote "origin"]-এর নিচে এটা Add করো:

fetch = +refs/pull/*/head:refs/remotes/github-pr/*

এখন git fetch সব PR Pull করে:

 * [new ref]   refs/pull/1015/head -> github-pr/1015
 * [new ref]   refs/pull/1020/head -> github-pr/1020

যেকোনো PR Checkout করো:

git checkout github-pr/1015

তুমি এখন PR-এর Exact Commit-এ। হ্যাঁ, এটা Detached HEAD। হ্যাঁ, Changes Push back করতে চাইলে Mildly Annoying। কিন্তু Code Read করা আর Test Run করার জন্য — যেটা আমার বেশিরভাগ Review — আমি Care করি না। এটা যেকোনো Machine-এ কাজ করে যেখানে Git আছে, পুরোনো Server-েও যেখানে নতুন Tool Install করা Nightmare।

Detached HEAD কখনও কখনও Feature। কারো PR-তে Accidentally Commit করা থেকে বাঁচায় যখন Explore করছি।

Method 2: GitHub CLI (যখন Power দরকার)

কখনও কখনও আরো দরকার হয়। হয়তো PR-তে Fixes Push back করতে চাও — Typo Fix করো, Push করো, তারা Merge করে, সবাই Happy। নাহলে Proper Branch Tracking চাও।

GitHub CLI Install করো, একবার gh auth login দিয়ে Authenticate করো, তারপর:

gh pr checkout 1015

এটা Proper Branch Names, Remote Tracking, আর Fork Automatic Handle করে। Push কাজ করে কারণ gh Upstream Configure করে দেয়।

আমি gh pr list ও Use করি GitHub-এর Slow Interface Load না করে Open PRs Scan করতে। তারপর Interesting লাগলে Checkout করি।

বিরক্তিকর Part

আরেকটা Tool Install করা। SSH দিয়ে Server-এ থাকলে আরেকটা Break হওয়ার জিনিস। আরেকটা Auth Token Manage করা। gh যখন কাজ করে, Great। যখন কাজ করে না, তুমি OAuth Flow Debug করছো Code Review করার পরিবর্তে।

আরেকবার gh Auto-updated হলো আর দুই দিন Shell Integration Break করলো। Fun নয় যখন Ship করতে হচ্ছে।

আমার Actual Workflow

Quick Review — শুধু Reading আর Testing:

git fetch
git checkout github-pr/420
go test ./...
git checkout main

Review যেখানে Fix করতে হবে:

git checkout main  # Clean Start
gh pr checkout 420 --branch review-420
# ... Bug Fix করো ...
git commit -am "fix: handle nil pointer"
git push  # Automatic তাদের PR-তে Push হয়
gh pr review 420 --approve

CLI Shine করে যখন Changes করো। শুধু Code Read করার জন্য? Overkill।

যে Cost কেউ বলে না

একটা Edge Case Hit করেছিলাম একবার: Git Config Method প্রতি Fetch-এ সব PR Pull করে। যদি Repo-তে 500 Open PR থাকে, সেটা অনেক Refs। git fetch Slow হয়ে যায়। git branch -a Unreadable হয়ে যায়।

সেই Case-এ gh Use করো। এটা শুধু যা দরকার তাই Checkout করে।

Normal repos-এ 20-50 PR থাকলে? Who cares। সব Fetch করো।

Meta description: GitHub Pull Request Locally Checkout করার দুইটা Practical Method: Git Config Trick দ্রুত Review-এর জন্য, আর GitHub CLI যখন Changes Push back করতে হয়।

FAQ

Q Git Config Method Private Repository-এ কাজ করে?
A হ্যাঁ, যতক্ষণ তোমার SSH Key বা Token-এর Access আছে। Fetch তোমার Existing Git Authentication দিয়েই হয়।
Q Git Config Method দিয়ে Changes Push করা যায়?
A সরাসরি না — তুমি Detached HEAD-এ আছো। Fix Push করতে চাইলে GitHub CLI Method-এ Switch করো।
Q যদি PR অন্য Organization-এর Fork থেকে আসে?
A দুইটা Method-ই Fork Handle করে Automatic। Git Config Method refs/pull/* Fetch করে যেটা Cross-repo PR Include করে। gh pr checkout তোমার জন্য Fork Remote Resolve করে।
Q GitHub CLI Enterprise-এ কাজ করে?
A হ্যাঁ, প্রথমে gh auth login --hostname your-ghe-instance.com Run করে তোমার Enterprise Server-এ Authenticate করো।
Q Git Config Method দিয়ে git fetch Slow কেন?
A Git সব PR Refs Fetch করে। যদি তোমার Repo-তে 500+ Open PR থাকে, সেটা অনেক Refs Download করতে হয়। Large repos-এর জন্য gh Use করো — এটা শুধু যা দরকার তাই Checkout করে।
Asaduzzaman Pavel

About the Author

Asaduzzaman Pavel is a Software Engineer who actually enjoys the friction of a well-architected system. He has over 15 years of experience building high-performance backends and infrastructure that can actually handle the real-world chaos of scale.

Currently looking for new opportunities to build something amazing.