Git-এ Develop Branch — এটি কী, উদ্দেশ্য এবং কাজের নীতি

লেখক: IT Sectr প্রকাশিত: 2026-05-09 পড়ার সময়: 8 মিনিট

Develop Branch হল Git Flow-এর প্রধান ইন্টিগ্রেশন ব্রাঞ্চ যেখানে রিলিজ প্রস্তুত করার আগে সমস্ত সম্পূর্ণ feature branches মার্জ করা হয়। main-এর বিপরীতে, develop-এ সবচেয়ে নতুন কিন্তু এখনও প্রকাশিত না হওয়া পরিবর্তনগুলি থাকে — এখানে টিমের সমস্ত ডেভেলপারদের থেকে দৈনিক কোড ইন্টিগ্রেশন ঘটে। Atlassian, 2024-এর মতে, develop Git Flow-এ একটি বাধ্যতামূলক ব্রাঞ্চ এবং টিমের জন্য একটি স্থিতিশীল ইন্টিগ্রেশন পরিবেশ প্রদান করে।

মুখ্য বিষয়

  • Develop Branch হল ডেভেলপমেন্ট ব্রাঞ্চ যেখানে রিলিজ প্রস্তুত করার আগে সমস্ত সম্পূর্ণ ফিচার সংগ্রহ করা হয়।
  • Feature branches-এর উৎস — সমস্ত নতুন ফিচার সর্বশেষ develop commit থেকে তৈরি করা হয়।
  • ইন্টিগ্রেশন টেস্টিং release branch তৈরি করার আগে develop-এ করা হয়।
  • Develop-এর স্থিতিশীলতা উচ্চ হতে হবে — কোড এখানে কোড রিভিউ এবং স্বয়ংক্রিয় পরীক্ষার মধ্য দিয়ে যায়।
  • main-এ মার্জিং শুধুমাত্র release branch-এর মাধ্যমে ঘটে, সরাসরি develop থেকে নয়।

Git-এ Develop Branch কী

Develop Branch (ডেভেলপমেন্ট ব্রাঞ্চ) হল Git Flow-এ একটি দীর্ঘস্থায়ী ব্রাঞ্চ যা সমস্ত ডেভেলপারদের থেকে কোড ইন্টিগ্রেশনের জন্য কেন্দ্রীয় হাব হিসাবে কাজ করে। ডেভেলপমেন্ট সম্পূর্ণ হওয়ার এবং কোড রিভিউর পরে feature branches এতে মার্জ করা হয়।

develop-এ কোড সর্বদা রিলিজ তৈরির জন্য প্রস্তুত অবস্থায় থাকে, যদিও এখনও প্রোডাকশনে ডিপ্লয় করা হয়নি। এর মানে হল যে develop-এর সমস্ত ফিচার রিভিউ, টেস্টিং এবং ইন্টিগ্রেশন পরীক্ষার মধ্য দিয়ে গেছে, কিন্তু এখনও তাদের রিলিজ চক্রের অপেক্ষায় রয়েছে।

main-এর বিপরীতে, যেখানে প্রতিটি কোড সংস্করণ একটি রিলিজ, develop-এ পরিবর্তনের একটি ধারাবাহিক ধারা থাকে। feature branches মার্জ হওয়ার সাথে সাথে develop-এ commits দেখা যায়, যা দিনে বেশ কয়েকবার ঘটতে পারে।

Vincent Driessen, 2010-এর মতে, develop একটি সফল ব্রাঞ্চিং মডেলের একটি মূল উপাদান, কারণ এটি খসড়া কাজকে রিলিজের জন্য প্রস্তুত সংস্করণ থেকে আলাদা করে।

develop এবং main branch-এর মধ্যে পার্থক্য

develop এবং main-এর মধ্যে পার্থক্য বোঝা সঠিক Git Flow ওয়ার্কফ্লোর জন্য গুরুত্বপূর্ণ। এই ব্রাঞ্চগুলি ভিন্ন ভিন্ন কাজ করে এবং স্থিতিশীলতার ভিন্ন ভিন্ন প্রয়োজনীয়তা রাখে।

বৈশিষ্ট্যDevelopMain / Master
উদ্দেশ্যনতুন ফিচারের একীকরণস্থিতিশীল রিলিজ কোড
স্থিতিশীলতাউচ্চ (পরীক্ষার পরে)সর্বোচ্চ (প্রোডাকশন)
Commit ফ্রিকোয়েন্সিদৈনিক (feature মার্জিং)প্রতি রিলিজ (প্রতি ১-৪ সপ্তাহ)
ব্রাঞ্চ উৎসএটি থেকে feature তৈরি হয়এটি থেকে hotfix তৈরি হয়
মার্জিংPR-এর মাধ্যমে feature থেকেmerge-এর মাধ্যমে release থেকে

develop এবং main-এ বিভাজন টিমকে প্রোডাকশন সংস্করণের স্থিতিশীলতা ঝুঁকির মধ্যে না ফেলে ক্রমাগত নতুন কোড একীভূত করতে দেয়। ডেভেলপাররা অফিসিয়াল রিলিজের আগেও, PR অনুমোদনের সাথে সাথেই develop-এ তাদের কোড দেখতে পারেন।

Git Flow-এ develop-এর ভূমিকা

Git Flow মডেলে, develop feature branches (পরিবর্তনের উৎস) এবং release branches (রিলিজের প্রস্তুতি) এর মধ্যে একটি কেন্দ্রীয় স্থান দখল করে। এই শ্রেণিবিন্যাস বোঝা কার্যকর ব্রাঞ্চিং-এর ভিত্তি।

  • Feature → Develop — প্রতিটি সম্পূর্ণ ফিচার কোড রিভিউ সহ Pull Request-এর মাধ্যমে develop-এ মার্জ করা হয়।
  • Develop → Release — যখন রিলিজের জন্য যথেষ্ট পরিবর্তন জমা হয়, develop থেকে release branch তৈরি করা হয়।
  • Release → Main + Develop — চূড়ান্ত প্রস্তুতির পরে, release branch main (রিলিজ) এবং develop-এ (বাগ ফিক্স) মার্জ করা হয়।
  • Hotfix → Main + Develop — গুরুত্বপূর্ণ ফিক্স main থেকে তৈরি হয় এবং উভয় ব্রাঞ্চে মার্জ করা হয়।

এই কাঠামো নিশ্চিত করে যে develop-এ সর্বদা সমস্ত নতুন ফিচার সহ সর্বশেষ কোড থাকে, যখন main-এ শুধুমাত্র যাচাইকৃত প্রোডাকশন কোড থাকে। এটি App Store এবং Google Play-তে দীর্ঘ রিভিউ চক্রযুক্ত মোবাইল প্রজেক্টের জন্য বিশেষভাবে গুরুত্বপূর্ণ।

অন্যান্য Git Flow ব্রাঞ্চের সাথে develop-এর সম্পর্ক

Develop feature, release এবং hotfix branches-এর মধ্যে কেন্দ্রীয় লিঙ্ক হিসাবে কাজ করে। মার্জ দিকনির্দেশনা বোঝা দ্বন্দ্ব এবং commit হারানো রোধ করার জন্য অপরিহার্য।

develop-এ কোড মানের প্রয়োজনীয়তা

develop-এ কোডের মান উচ্চ হতে হবে, কিন্তু পরম নয়। main-এর বিপরীতে, যেখানে প্রতিটি ত্রুটির অর্থ জরুরি hotfix, develop-এ ছোটখাট ত্রুটি গ্রহণযোগ্য যা রিলিজের আগে ঠিক করা হবে।

develop-এ মার্জ করার আগে কোডের জন্য ন্যূনতম প্রয়োজনীয়তা:

  • কম্পাইলেশন — কোড ত্রুটিমুক্তভাবে কম্পাইল হতে হবে। develop-এ ভাঙ্গা build পুরো টিমের কাজ বন্ধ করে দেয়।
  • ইউনিট টেস্ট — সমস্ত বিদ্যমান টেস্ট পাস করতে হবে। নতুন কোড কমপক্ষে ৭০% টেস্ট দ্বারা কভার করা উচিত।
  • কোড স্টাইল — কোড টিমের গৃহীত ফর্ম্যাটিং এবং নামকরণ মান মেনে চলতে হবে।
  • কোনো deprecated API নেই — নতুন কোডে পুরনো পদ্ধতি ব্যবহারের অনুমতি নেই।

CI/CD পাইপলাইনে স্বয়ংক্রিয় পরীক্ষা develop-এ প্রতিটি push-এ চালানো উচিত। যদি build ভেঙে যায়, দায়িত্বশীল ডেভেলপারকে এক ঘন্টার মধ্যে সমস্যা সমাধান করতে হবে বা তাদের commit ফিরিয়ে নিতে হবে।

develop-এর জন্য CI/CD পরীক্ষা

develop-এর জন্য GitHub Actions সেটআপ করা নিশ্চিত করে যে প্রতিটি PR মার্জ করার আগে স্বয়ংক্রিয় পরীক্ষার মধ্য দিয়ে যায়। একটি সাধারণ পাইপলাইনে build, টেস্ট এবং লিন্টিং অন্তর্ভুক্ত।

yaml
# GitHub Actions — মার্জের পর develop পরীক্ষা
name: Develop CI

on:
  pull_request:
    branches: [develop]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Unit tests
        run: ./gradlew testDebug
      - name: Lint
        run: ./gradlew lint
      - name: Build
        run: ./gradlew assembleDebug

develop-এ মার্জের নিয়ম

develop-এ মার্জ করা ইন্টিগ্রেশন ব্রাঞ্চের স্থিতিশীলতা বজায় রাখতে কঠোর নিয়ম অনুসরণ করতে হবে। এই নিয়ম লঙ্ঘন করলে দ্বন্দ্ব, ভাঙ্গা builds এবং টিমের সময় নষ্ট হয়।

  • শুধুমাত্র Pull Request-এর মাধ্যমে — develop-এ সরাসরি push নিষিদ্ধ। সমস্ত পরিবর্তন কোড রিভিউর মধ্য দিয়ে যায়।
  • কমপক্ষে একটি অনুমোদন — PR টাস্কে জড়িত নয় এমন কমপক্ষে একজন ডেভেলপার দ্বারা অনুমোদিত হতে হবে।
  • Squash merge — পরিষ্কার ইতিহাসের জন্য develop-এ মার্জ করার সময় সমস্ত feature branch commits একত্রিত করার সুপারিশ করা হয়।
  • PR হালনাগাদ হতে হবে — মার্জ করার আগে, PR সর্বশেষ develop commit (rebase বা merge) এর সাপেক্ষে হালনাগাদ হতে হবে।

PR হালনাগাদ নিয়ম বিশেষভাবে গুরুত্বপূর্ণ। যদি একটি feature branch এক সপ্তাহ আগে তৈরি করা হয় এবং develop 50 commits এগিয়ে যায়, সরাসরি মার্জ দ্বন্দ্ব সৃষ্টি করতে পারে যা develop-এর পরিবর্তে PR-এর প্রসঙ্গে সমাধান করা ভাল।

ভুল মার্জ থেকে develop রক্ষা করা

Branch protection rules হল GitHub, GitLab বা Bitbucket স্তরের সেটিংস যা develop-এ ভুল পরিবর্তনগুলি প্রতিরোধ করে। তারা নিশ্চিত করে যে এমনকি একটি আকস্মিক pushও ইন্টিগ্রেশন ব্রাঞ্চ ভাঙ্গবে না।

develop-এর জন্য প্রস্তাবিত সুরক্ষা নিয়ম:

  • Pull request প্রয়োজন — develop-এ সরাসরি push নিষিদ্ধ করুন। সমস্ত পরিবর্তন শুধুমাত্র PR-এর মাধ্যমে।
  • অনুমোদন প্রয়োজন — PR মার্জ করার আগে কমপক্ষে 1-2টি অনুমোদন।
  • স্থিতি পরীক্ষা প্রয়োজন — যদি CI/CD পাইপলাইন পাস না করে তবে মার্জ ব্লক করুন।
  • হালনাগাদ থাকা প্রয়োজন — মার্জ করার আগে PR ব্রাঞ্চ develop-এর সাপেক্ষে হালনাগাদ হতে হবে।
  • Push অ্যাক্সেস সীমাবদ্ধ করুন — develop-এ push অধিকার শুধুমাত্র সিনিয়র ডেভেলপারদের মধ্যে সীমাবদ্ধ করুন।

develop সুরক্ষা সেটআপ করতে 10 মিনিট সময় লাগে কিন্তু ভাঙ্গা ইন্টিগ্রেশন ব্রাঞ্চ সম্পর্কিত সপ্তাহের ডাউনটাইম প্রতিরোধ করে। মাল্টি-প্ল্যাটফর্ম টিমযুক্ত মোবাইল প্রজেক্টের জন্য, এটি বিশেষভাবে প্রাসঙ্গিক।

develop-এর সাথে কাজ করার জন্য কমান্ড উদাহরণ

একটি সাধারণ ডেভেলপারের দিন বিবেচনা করুন: সকালে তারা develop আপডেট করে, একটি নতুন feature branch তৈরি করে এবং কাজ শেষ করার পরে পরিবর্তনগুলি develop-এ ফিরিয়ে আনে।

bash
# সকালের develop সিঙ্ক
git checkout develop
git pull origin develop

# develop থেকে নতুন feature branch তৈরি করা
git checkout -b feature/add-push-notifications

# ফিচারে কাজ...
git add . && git commit -m "Add FCM integration"

# ডেভেলপমেন্টের সময় develop আপডেট করা
git fetch origin develop
git rebase origin/develop

# PR অনুমোদনের পরে — স্থানীয় develop আপডেট করুন
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications

develop-এ git pull কমান্ড একসাথে দুটি অপারেশন করে: git fetch (সার্ভার থেকে নতুন commits আনে) এবং git merge (সেগুলিকে স্থানীয় ব্রাঞ্চের সাথে মার্জ করে)। develop-এর জন্য, এটি মানক সিঙ্ক্রোনাইজেশন পদ্ধতি।

ভাঙ্গা মার্জের পরে develop পুনরুদ্ধার করা

যদি build ভাঙ্গা কোড develop-এ আসে, তবে দ্রুত কাজ করতে হবে। develop-এর ডাউনটাইমের প্রতিটি ঘন্টা পুরো ডেভেলপমেন্ট টিমের জন্য অবরুদ্ধ কাজ।

যদি build ভাঙ্গা কোড develop-এ আসে, সমস্যাযুক্ত পরিবর্তনগুলি পূর্বাবস্থায় ফেরাতে একটি নতুন commit তৈরি করতে git revert ব্যবহার করুন। develop-এ git reset ব্যবহার করবেন না — এটি ইতিহাস পুনরায় লেখে যা অন্যান্য টিম সদস্যদের কাছে ইতিমধ্যে রয়েছে।

bash
# সমস্যাযুক্ত commit খুঁজে বের করা
git log --oneline develop

# revert-এর মাধ্যমে commit বাতিল (নিরাপদ)
git revert a1b2c3d

# রিমোট develop-এ ফিক্স পাঠানো
git push origin develop

# নির্দিষ্ট commit-এ পরিবর্তন দেখা
git show a1b2c3d --stat

প্রায়শই জিজ্ঞাসিত প্রশ্ন

ছোট প্রজেক্টে কি develop branch প্রয়োজন?

এক বা দুই ডেভেলপারের প্রজেক্টের জন্য, develop প্রায়শই অপ্রয়োজনীয় — main এবং feature branches যথেষ্ট। টিম ৩+ লোকে বাড়ার সাথে সাথে, develop স্থিতিশীল প্রোডাকশন কোড থেকে অসম্পূর্ণ ফিচার আলাদা করার জন্য প্রয়োজনীয় হয়ে ওঠে।

সরাসরি develop-এ commit করা যাবে?

না, যেকোনো পেশাদার প্রজেক্টে develop-এ সরাসরি commits নিষিদ্ধ। সমস্ত পরিবর্তন কোড রিভিউ এবং স্বয়ংক্রিয় পরীক্ষা সহ Pull Request-এর মাধ্যমে যায়। ব্যতিক্রম হল README বা CI কনফিগারেশনের প্রশাসনিক সম্পাদনা, কিন্তু সেগুলিও PR-এর মাধ্যমে করা ভাল।

develop trunk-based development থেকে কীভাবে আলাদা?

Trunk-based development-এ কোনো আলাদা develop branch নেই — সমস্ত ডেভেলপার খুব ছোট feature branches (1-2 দিন) সহ main-এ কাজ করে। এটি Git Flow-এর একটি বিকল্প, যা উচ্চ স্তরের টেস্ট অটোমেশন সহ DevOps সংস্কৃতিতে জনপ্রিয়।

কতবার develop রিলিজ পরিবর্তনের সাথে আপডেট করা উচিত?

প্রতি রিলিজের পরে, release branch develop-এ ফিরিয়ে আনা হয় যাতে রিলিজ প্রস্তুতির সময় করা সমস্ত ফিক্স অন্তর্ভুক্ত করা যায়। যদি এটি না করা হয়, develop রিলিজ কোড থেকে আলাদা হয়ে যাবে, যা পরবর্তী রিলিজে দ্বন্দ্ব সৃষ্টি করবে।

develop ভেঙে গেলে এবং কেউ PR তৈরি করতে না পারলে কী করবেন?

যদি develop ভেঙে যায়, একজন সিনিয়র ডেভেলপার শেষ স্থিতিশীল commit থেকে hotfix branch তৈরি করে, সমস্যা সমাধান করে এবং বিশেষ অবস্থা সহ PR-এর মাধ্যমে সরাসরি develop-এ ফিক্স মার্জ করে। পুনরুদ্ধারের পরে, মূল কারণ বিশ্লেষণ করা হয়।

সারসংক্ষেপ

  • Develop Branch হল Git Flow-এর কেন্দ্রীয় ইন্টিগ্রেশন ব্রাঞ্চ যেখানে কোড রিভিউর পরে সমস্ত সম্পূর্ণ feature branches মার্জ করা হয়।
  • develop এবং main আলাদা করা অসম্পূর্ণ ফিচারগুলিকে স্থিতিশীল প্রোডাকশন কোড থেকে আলাদা করতে দেয়, রিলিজ ত্রুটির ঝুঁকি হ্রাস করে।
  • কোডের মান develop-এ উচ্চ হতে হবে: কম্পাইলেশন, টেস্ট পাস করা এবং কোড স্টাইল স্বয়ংক্রিয়ভাবে পরীক্ষা করা হয়।
  • develop-এ সরাসরি push নিষিদ্ধ — শুধুমাত্র কমপক্ষে একজন সহকর্মীর অনুমোদন সহ Pull Request-এর মাধ্যমে।
  • Branch সুরক্ষা branch protection rules-এর মাধ্যমে ইন্টিগ্রেশন পরিবেশের আকস্মিক ভাঙ্গন রোধ করে।
  • Release branch develop থেকে তৈরি হয় এবং রিলিজের পরে ফিরিয়ে আনা হয়, develop-কে প্রকৃত কোড অবস্থার সাথে সিঙ্ক্রোনাইজ করে।
  • সুপারিশ: develop-এ প্রতিটি push-এ CI/CD পরীক্ষা সেটআপ করুন এবং মার্জ করার আগে PR কে হালনাগাদ থাকতে বাধ্য করুন।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন