Pull Request (PR) হল Git-এ একটি সহযোগিতা প্রক্রিয়া যা ডেভেলপারকে টিমকে জানাতে দেয় যে পরিবর্তনগুলি মূল শাখায় মার্জ করার জন্য প্রস্তুত। PR-এর মধ্যে কোড আলোচনা, স্বয়ংক্রিয় CI/CD চেক এবং কোড রিভিউ প্রক্রিয়া অন্তর্ভুক্ত। GitHub Docs, 2026 অনুযায়ী, প্ল্যাটফর্মে মাসিক 150 মিলিয়নেরও বেশি Pull Requests তৈরি করা হয়।
মূল বিষয়
Pull Request (PR) হল একটি ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল সিস্টেমের মধ্যে একটি শাখা থেকে অন্য শাখায় পরিবর্তন অন্তর্ভুক্ত করার একটি আনুষ্ঠানিক অনুরোধ। PR হল GitHub, GitLab এবং Bitbucket প্ল্যাটফর্মে সহযোগিতামূলক উন্নয়নের কেন্দ্রীয় উপাদান, যা কোড আলোচনা, স্বয়ংক্রিয় পরীক্ষণ এবং পরিবর্তন অনুমোদন প্রক্রিয়াকে একত্রিত করে।
নামটি “Pull Request” অপারেশনের সারমর্ম প্রতিফলিত করে: একজন ডেভেলপার রিপোজিটরি মালিকের কাছে তার পরিবর্তনগুলি “টানার” (pull) অনুরোধ (request) করে। শব্দটি GitHub 2008 সালে প্রবর্তন করেছিল — তার আগে, প্যাচ এবং merge requests (GitLab-এর শব্দ) আকারে একই রকম প্রক্রিয়া বিদ্যমান ছিল। আজ, PR টিম Git ডেভেলপমেন্টের জন্য ডি ফ্যাক্টো স্ট্যান্ডার্ড।
GitHub Octoverse, 2025 অনুযায়ী, 89% ওপেন-সোর্স প্রকল্পে পরিবর্তন আনার জন্য PR তৈরি করা প্রয়োজন। কর্পোরেট ডেভেলপমেন্টে, এই সংখ্যা 95% এ পৌঁছায়। PR শুধু একটি প্রযুক্তিগত সরঞ্জাম নয়, বরং উন্নয়ন সংস্কৃতির অংশ হয়ে উঠেছে: PR-এর মাধ্যমে জ্ঞান স্থানান্তর, বাগ সনাক্তকরণ এবং আর্কিটেকচারাল সিদ্ধান্ত সমন্বয় ঘটে।
একটি সাধারণ PR-এ শিরোনাম, বিবরণ, পরিবর্তিত ফাইলের তালিকা (diff), রিভিউয়ার মন্তব্য এবং CI চেক স্ট্যাটাস থাকে। প্রতিটি PR একটি নির্দিষ্ট উৎস শাখা এবং লক্ষ্য শাখার সাথে সংযুক্ত থাকে এবং মার্জ করার পরে স্বয়ংক্রিয়ভাবে মুছে ফেলা যেতে পারে।
PR তৈরি করা রিমোট রিপোজিটরিতে একটি ফিচার শাখা প্রকাশ করার মাধ্যমে শুরু হয়। পুশ করার পরে, ডেভেলপার প্ল্যাটফর্ম ইন্টারফেস বা CLI (gh, glab) এর মাধ্যমে PR খোলে। আসুন GitHub-এর উদাহরণ দিয়ে প্রক্রিয়াটি দেখি।
প্রথম ধাপ — রিমোট রিপোজিটরিতে ফিচার শাখা পুশ করা এবং ওয়েব ইন্টারফেস বা কমান্ড লাইনের মাধ্যমে Pull Request তৈরি করা।
# ফিচার শাখা তৈরি এবং পুশ করুন
git checkout -b feature/biometric-auth
git add src/auth/
git commit -m "feat: add biometric authentication"
git push -u origin feature/biometric-auth
# GitHub CLI-এর মাধ্যমে PR তৈরি করুন
gh pr create --title "feat: add biometric authentication" \
--body "Implements fingerprint and face recognition login.
Closes #142" \
--base develop
PR তৈরি করার পরে, GitHub স্বয়ংক্রিয়ভাবে CI পাইপলাইন (GitHub Actions) চালায়, লক্ষ্য শাখার সাথে দ্বন্দ্ব পরীক্ষা করে এবং রিভিউয়ারদের আমন্ত্রণ জানায়। PR বিবরণ টেমপ্লেট .github/PULL_REQUEST_TEMPLATE.md এর মাধ্যমে কনফিগার করা যেতে পারে যাতে সমস্ত PR-এ প্রয়োজনীয় বিভাগ থাকে: লক্ষ্য, পরিবর্তন, পরীক্ষণ, সম্পর্কিত কাজ।
একটি মানসম্পন্ন PR বিবরণ-এ অন্তর্ভুক্ত: কাজের লিঙ্ক (issue/ticket), পরিবর্তনের সংক্ষিপ্ত বিবরণ, পরীক্ষণের নির্দেশনা এবং সম্পর্কিত পরিবর্তনের তালিকা। লেবেল (bug, feature, refactoring) PR শ্রেণিবদ্ধ করতে সাহায্য করে, যখন assignees এবং reviewers CODEOWNERS-এর মাধ্যমে স্বয়ংক্রিয়ভাবে নিযুক্ত হয়।
# CODEOWNERS-এর মাধ্যমে রিভিউয়ার নিয়োগ করুন (রিপোজিটরি রুটে ফাইল)
# উদাহরণ .github/CODEOWNERS:
# src/auth/ @team-auth @senior-dev
# src/api/ @team-backend
# *.kt @kotlin-team
# gh cli-এর মাধ্যমে রিভিউয়ার নিয়োগ করে PR তৈরি করুন
gh pr create --reviewer "team-auth" --label "feature"
CODEOWNERS হল পরিবর্তিত ফাইলের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে রিভিউয়ার নিযুক্ত করার জন্য একটি মানক GitHub/GitLab প্রক্রিয়া। উদাহরণস্বরূপ, src/auth/ ডিরেক্টরিতে যে কোনো পরিবর্তন স্বয়ংক্রিয়ভাবে team-auth এবং senior-dev কে রিভিউয়ার হিসেবে নিযুক্ত করে। এটি প্রক্রিয়াকে গতি দেয় এবং নিশ্চিত করে যে সঠিক ব্যক্তিরা PR দেখেন।
রিভিউয়ারের মন্তব্য পাওয়ার পরে, ডেভেলপার একই ফিচার শাখায় সংশোধন করে এবং নতুন কমিট পুশ করে — PR স্বয়ংক্রিয়ভাবে আপডেট হয়। প্রকাশিত ফিচার শাখায় ইতিহাস পুনরায় লেখা (rebase) গুরুত্বপূর্ণ নয় যদি PR ইতিমধ্যে খোলা থাকে, কারণ এটি মন্তব্যে নির্দিষ্ট কমিটের লিঙ্ক ভেঙ্গে দেয়।
# রিভিউয়ারের মন্তব্যের উপর ভিত্তি করে পরিবর্তন করুন
git checkout feature/biometric-auth
# কোড ঠিক করুন
git commit -m "fix: handle biometric timeout per review"
git push
# PR স্বয়ংক্রিয়ভাবে আপডেট হবে
# অনুমোদনের পরে — GitHub ইন্টারফেসের মাধ্যমে PR মার্জ করুন
কোড রিভিউ হল Pull Request-এর কেন্দ্রীয় উপাদান। রিভিউয়ার সঠিকতা, কোড শৈলী, নিরাপত্তা এবং আর্কিটেকচারাল সামঞ্জস্যের জন্য পরিবর্তনগুলি পরীক্ষা করে। একটি মানসম্পন্ন রিভিউ শুধু বাগ প্রতিরোধ করে না বরং টিমের মধ্যে কোডবেস সম্পর্কে জ্ঞান ছড়িয়ে দেয়।
Google-এর Engineering Practices (2025) কোড রিভিউর নিম্নলিখিত নীতিগুলি সুপারিশ করে: রিভিউয়ারকে পরিবর্তনের প্রসঙ্গ বুঝতে হবে, সাধারণ মন্তব্যের পরিবর্তে নির্দিষ্ট সুপারিশ দিতে হবে এবং প্রযুক্তিগত ও শৈলীগত মন্তব্য আলাদা করতে হবে। রিভিউর সময় PR তৈরি করার 24 ঘন্টার বেশি হওয়া উচিত নয়।
মোবাইল ডেভেলপমেন্ট-এর জন্য, কোড রিভিউতে নির্দিষ্ট চেক অন্তর্ভুক্ত: targetSdk-এর সাথে সামঞ্জস্য, সঠিক lifecycle হ্যান্ডলিং (Android) / view lifecycle (iOS), মেমরি লিকের অনুপস্থিতি (LeakCanary, Instruments), ডার্ক থিম সমর্থন এবং স্থানীয়করণ। এই চেকগুলি linters এবং Detekt/ktlint-এর মাধ্যমে স্বয়ংক্রিয় করা যেতে পারে।
PR প্ল্যাটফর্ম তিন ধরনের মন্তব্য সমর্থন করে: সাধারণ (সম্পূর্ণ PR-এ), লাইনভিত্তিক (কোডের নির্দিষ্ট লাইনে), এবং পরামর্শ (প্রতিস্থাপন কোড সহ)। পরামর্শ এক ক্লিকে পরিবর্তন প্রয়োগ করতে দেয়, যা প্রক্রিয়াকে গতি দেয় এবং পুনরাবৃত্তির সংখ্যা কমায়।
সমস্ত মন্তব্য সমাধান হওয়ার পরে এবং CI চেক পাস করার পরে, রিভিউয়ার অনুমোদন (Approved) পাঠায়। PR মার্জ করা যেতে পারে। GitHub এবং GitLab শাখা সুরক্ষা নিয়ম সমর্থন করে: প্রয়োজনীয় অনুমোদনের সংখ্যা, বাধ্যতামূলক CI চেক এবং PR ছাড়া main-এ পুশ নিষেধাজ্ঞা। মোবাইল প্রকল্পের জন্য, শাখা সুরক্ষায় বিল্ড যাচাইকরণও অন্তর্ভুক্ত: PR মার্জ করা যাবে না যদি অ্যাপ্লিকেশন বিল্ড না হয় (gradle build failed / xcodebuild failed)।
মার্জ দ্বন্দ্ব Pull Request-এ সক্রিয় টিম কাজের একটি সাধারণ ঘটনা। প্ল্যাটফর্মগুলি ওয়েব ইন্টারফেসের মাধ্যমে দ্বন্দ্ব সমাধান প্রদান করে (সরল দ্বন্দ্বের জন্য) বা স্থানীয়ভাবে সমাধান করার সুপারিশ করে। GitHub Actions ফিচার শাখায় প্রতিটি পুশের সাথে স্বয়ংক্রিয়ভাবে মার্জযোগ্যতা পরীক্ষা করে এবং যদি মার্জ সম্ভব না হয় তবে PR-কে দ্বন্দ্ব হিসেবে চিহ্নিত করে।
কার্যকর Pull Requests কোড রিভিউকে গতি দেয় এবং বাগের সংখ্যা কমায়। SmartBear (2025) এর একটি গবেষণায় দেখা গেছে যে 200 লাইন কোড পর্যন্ত PR 1000 লাইনের বেশি PR-এর তুলনায় 2 গুণ বেশি অর্থপূর্ণ মন্তব্য পায় এবং রিভিউ সময় 3 গুণ কমে যায়।
অতিরিক্ত অনুশীলন: শুক্রবার সন্ধ্যায় PR তৈরি করবেন না (সোমবার পর্যন্ত কেউ রিভিউ করবে না), 1-2 জনের কাছ থেকে রিভিউ অনুরোধ করুন (বেশি গুণমান উন্নত না করে প্রক্রিয়াকে ধীর করে), মার্জ করার আগে ইতিহাস সংকুচিত করতে squash merge ব্যবহার করুন। মোবাইল প্রকল্পের জন্য, PR বিবরণে পরীক্ষণ বিল্ডের (Firebase App Distribution / TestFlight) লিঙ্ক যোগ করারও সুপারিশ করা হয় যাতে রিভিউয়ার চলমান অ্যাপ্লিকেশনে পরিবর্তন যাচাই করতে পারে।
Pull Requests নিয়ে কাজ করার জন্য প্রধান প্ল্যাটফর্ম হল GitHub, GitLab এবং Bitbucket। ভাগ করা ধারণা সত্ত্বেও, প্রতিটির বৈশিষ্ট্য রয়েছে যা টিমের জন্য টুল বেছে নেওয়ার সময় বিবেচনা করা উচিত।
| বৈশিষ্ট্য | GitHub | GitLab | Bitbucket |
|---|---|---|---|
| নাম | Pull Request | Merge Request | Pull Request |
| CI/CD | GitHub Actions | GitLab CI/CD | Bitbucket Pipelines |
| Code owners | CODEOWNERS | CODEOWNERS | CODEOWNERS |
| অটো-মার্জ | হ্যাঁ | হ্যাঁ | হ্যাঁ |
| Squash merge | হ্যাঁ | হ্যাঁ | হ্যাঁ |
| বিশেষ বৈশিষ্ট্য | সবচেয়ে বড় কমিউনিটি | সেল্ফ-হোস্টেড + CI/CD | Jira ইন্টিগ্রেশন |
GitHub সবচেয়ে জনপ্রিয় প্ল্যাটফর্ম যা সবচেয়ে বড় কমিউনিটি, CI/CD-এর জন্য Actions এবং অ্যাপ্লিকেশনের বিস্তৃত ইকোসিস্টেম (GitHub Marketplace) নিয়ে। GitLab-এ বিল্ট-ইন CI/CD এবং সম্পূর্ণ সেল্ফ-হোস্টেড ডিপ্লয়মেন্ট ক্ষমতা রয়েছে। Bitbucket Jira এবং Atlassian ইকোসিস্টেমের সাথে ঘনিষ্ঠভাবে সংহত, কর্পোরেট পরিবেশে জনপ্রিয়।
মোবাইল ডেভেলপমেন্ট-এর জন্য, প্ল্যাটফর্মের পছন্দ প্রায়শই CI/CD ক্ষমতা দ্বারা নির্ধারিত হয়: GitHub Actions iOS বিল্ডের জন্য macOS runners সমর্থন করে, GitLab-এ iOS/Android-এর জন্য বিল্ট-ইন runners রয়েছে, Bitbucket Firebase Test Lab-এর সাথে ভালভাবে সংহত হয়। প্ল্যাটফর্ম নির্বিশেষে, PR প্রক্রিয়া একই থাকে: শাখা → রিভিউ → CI → মার্জ।
সচরাচর জিজ্ঞাসিত প্রশ্ন
শুধু নামে। GitHub Pull Request শব্দটি ব্যবহার করে, GitLab Merge Request (MR) ব্যবহার করে। কার্যকারিতা একই: আলোচনা, রিভিউ এবং CI চেক সহ পরিবর্তন মার্জ করার অনুরোধ। Bitbucket, GitHub-এর মতো, Pull Request ব্যবহার করে।
সর্বোত্তমভাবে 1-2। একজন রিভিউয়ার লজিক এবং আর্কিটেকচার পরীক্ষা করে, দ্বিতীয়জন নিরাপত্তা বা নির্দিষ্ট এলাকা (UI, ডেটাবেস) পরীক্ষা করে। বেশি রিভিউয়ার গুণমান উল্লেখযোগ্যভাবে উন্নত না করে প্রক্রিয়াকে ধীর করে দেয়।
প্রযুক্তিগতভাবে হ্যাঁ, যদি শাখা সুরক্ষা নিয়ম অনুমোদনের প্রয়োজন না করে। তবে, এটি একটি খারাপ অনুশীলন: এমনকি অভিজ্ঞ ডেভেলপাররাও বাগ উপেক্ষা করে। ব্যতিক্রমগুলির মধ্যে পোস্ট-রিভিউ সহ হটফিক্স, তুচ্ছ পরিবর্তন (টাইপো, নির্ভরতা সংস্করণ) অন্তর্ভুক্ত।
মার্জ বা rebase-এর মাধ্যমে দ্বন্দ্ব সমাধান করুন। GitHub এবং GitLab সরল দ্বন্দ্ব সমাধানের জন্য ওয়েব ইন্টারফেস প্রদান করে। জটিল দ্বন্দ্বের জন্য, স্থানীয়ভাবে git merge target-branch চালান, দ্বন্দ্ব সমাধান করুন এবং পরিবর্তন পুশ করুন।
হ্যাঁ, এটি একটি সেরা অনুশীলন। GitHub এবং GitLab মার্জের পরে স্বয়ংক্রিয় শাখা মুছে ফেলার প্রস্তাব দেয়। মুছে ফেলা শাখার তালিকা বিশৃঙ্খল হওয়া রোধ করে এবং নিশ্চিত করে যে ডেভেলপাররা ঘটনাক্রমে ইতিমধ্যে মার্জ করা শাখায় কাজ করবে না।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন