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

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

Release Branch হল Git Flow-এ একটি ব্রাঞ্চ যা ডিপ্লয়মেন্টের জন্য একটি নির্দিষ্ট রিলিজ প্রস্তুত করতে develop থেকে তৈরি করা হয়। এতে অ্যাপ্লিকেশনের ভার্সন ফিক্স করা হয়, শেষ বাগগুলি ঠিক করা হয় এবং মেটাডেটা আপডেট করা হয় — নতুন ফিচার যোগ না করেই। Vincent Driessen, 2010-এর মতে, রিলিজ ব্রাঞ্চ বর্তমান ডেভেলপমেন্ট থেকে রিলিজ প্রস্তুতিকে আলাদা করে, যা উভয় কার্যকলাপকে সমান্তরালভাবে চালানোর অনুমতি দেয়।

মূল পয়েন্ট

  • Release Branch — রিলিজ প্রস্তুতির জন্য অস্থায়ী ব্রাঞ্চ: ভার্সন ফিক্সেশন, বাগফিক্স এবং মেটাডেটা।
  • রিলিজ আইসোলেশন একসঙ্গে নতুন রিলিজ প্রস্তুত করা এবং develop-এ পরবর্তী ফিচারগুলির উন্নয়ন চালিয়ে যাওয়ার অনুমতি দেয়।
  • নতুন ফিচার নিষিদ্ধ — রিলিজ ব্রাঞ্চে শুধুমাত্র সংশোধন এবং ডকুমেন্টেশন যোগ করা হয়, কোনও নতুন কোড নয়।
  • ডাবল মার্জ — সম্পন্ন হওয়ার পর, রিলিজ ব্রাঞ্চ main (রিলিজ) এবং develop-এ (বাগফিক্স) মার্জ করা হয়।
  • নামকরণ — স্ট্যান্ডার্ড ফরম্যাট release/X.Y.Z অ্যাপ ভার্সন অনুযায়ী।

Git-এ Release Branch কী

Release Branch (রিলিজ ব্রাঞ্চ) হল Git Flow-এ একটি অস্থায়ী ব্রাঞ্চ, যা develop থেকে তৈরি করা হয় যখন টিম সিদ্ধান্ত নেয় যে ফিচারগুলির বর্তমান সেট রিলিজের জন্য প্রস্তুত। এটি ঠিক ততক্ষণ বিদ্যমান থাকে যতক্ষণ চূড়ান্ত রিলিজ প্রস্তুতি নেয় — কয়েক ঘন্টা থেকে কয়েক দিন পর্যন্ত।

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

রিলিজ ব্রাঞ্চে কোনও নতুন ফিচার তৈরি করা হয় না — শুধুমাত্র বাগ ফিক্স, অ্যাপ ভার্সন আপডেট, লোকালাইজেশন এবং ডকুমেন্টেশন। সমস্ত কাজ শেষ হওয়ার পর, রিলিজ ব্রাঞ্চ main-এ (রিলিজ হিসাবে চিহ্নিত) এবং develop-এ (যাতে বাগফিক্স ভবিষ্যতের ভার্সনে পৌঁছায়) মার্জ করা হয়।

Atlassian, 2024-এর মতে, নিয়মিত রিলিজ চক্রের প্রকল্পগুলির জন্য রিলিজ ব্রাঞ্চ অত্যন্ত গুরুত্বপূর্ণ — এগুলি রিলিজ প্রক্রিয়ার পূর্বাভাসযোগ্যতা এবং স্থিতিশীলতা নিশ্চিত করে।

রিলিজ ব্রাঞ্চের জীবনচক্র

রিলিজ ব্রাঞ্চের জীবনচক্র তৈরি থেকে মুছে ফেলা পর্যন্ত বেশ কয়েকটি ধাপ অন্তর্ভুক্ত করে। প্রতিটি ধাপ বোঝা টিমকে কর্ম সমন্বয় করতে এবং ভুল এড়াতে সাহায্য করে।

  1. তৈরি — develop-এর শেষ commit থেকে release/2.5.0 নামে একটি ব্রাঞ্চ তৈরি করা হয়। develop পরবর্তী ভার্সনের জন্য ফিচার ব্রাঞ্চ গ্রহণ করতে থাকে।
  2. প্রস্তুতি — রিলিজ ব্রাঞ্চে build.gradle, Info.plist এবং অন্যান্য কনফিগারেশন ফাইলে অ্যাপ ভার্সন আপডেট করা হয়।
  3. বাগফিক্সিং — চূড়ান্ত পরীক্ষার সময় পাওয়া গুরুতর ত্রুটিগুলি ঠিক করা হয়। শুধুমাত্র বাগ — কোনও নতুন ফিচার নয়।
  4. চূড়ান্ত পরীক্ষা — QA টিম রিলিজ ব্রাঞ্চে রিগ্রেশন পরীক্ষা করে। নতুন বাগ একই ব্রাঞ্চে সংশোধনের জন্য পাঠানো হয়।
  5. main-এ মার্জ — রিলিজ ব্রাঞ্চ --no-ff ফ্ল্যাগ সহ main-এ মার্জ করা হয়। রিলিজ ট্যাগ তৈরি হয়: v2.5.0
  6. develop-এ মার্জ — রিলিজ ব্রাঞ্চ develop-এ ফিরিয়ে আনা হয় যাতে রিলিজের বাগফিক্স বর্তমান উন্নয়নে পৌঁছায়।
  7. মুছে ফেলা — রিলিজ ব্রাঞ্চ স্থানীয় এবং দূরবর্তীভাবে মুছে ফেলা হয়, কারণ এর কাজ শেষ।

ধাপ ৬ — develop-এ ফিরতি মার্জ — প্রায়ই ভুলে যাওয়া হয়, কিন্তু এটি অত্যন্ত গুরুত্বপূর্ণ। এটি ছাড়া, রিলিজে করা বাগফিক্স develop-এ পৌঁছাবে না, এবং পরবর্তী রিলিজে একই ত্রুটিগুলি আবার দেখা দিতে পারে।

রিলিজ ব্রাঞ্চ ধাপগুলির সাধারণ সময়কাল

রিলিজ ব্রাঞ্চের জীবনকাল রিলিজের জটিলতা এবং develop-এ কোডের গুণমানের উপর নির্ভর করে। গড়ে, একটি মাঝারি আকারের মোবাইল অ্যাপ্লিকেশনের জন্য প্রস্তুতিতে ২ থেকে ৫ কার্যদিবস লাগে।

রিলিজ ব্রাঞ্চে কী করা হয়

রিলিজ ব্রাঞ্চে কঠোরভাবে সীমিত কাজের সেট সম্পাদিত হয়। এই তালিকা থেকে কোনও বিচ্যুতি Git Flow মডেল লঙ্ঘন করে এবং রিলিজ স্থিতিশীলতার জন্য ঝুঁকি তৈরি করে।

পরিবর্তনের ধরনঅনুমোদিতউদাহরণ
ভার্সনিংহ্যাঁbuild.gradle-এ versionName আপডেট
বাগফিক্সহ্যাঁস্টার্টআপে ক্র্যাশ ঠিক করা
লোকালাইজেশনহ্যাঁনতুন স্ক্রিনের জন্য অনুবাদ যোগ
ডকুমেন্টেশনহ্যাঁCHANGELOG এবং README আপডেট
নতুন ফিচারনানতুন প্রোফাইল স্ক্রিন যোগ
রিফ্যাক্টরিংনানেটওয়ার্ক লেয়ার পুনর্লিখন
লাইব্রেরি আপডেটসতর্কতাশুধুমাত্র বাগফিক্সের জন্য patch ভার্সন

নতুন ফিচার নিষিদ্ধ নিয়মটি রিলিজ ব্রাঞ্চে সবচেয়ে গুরুত্বপূর্ণ। যদি কোনও ফিচার রিলিজের জন্য সময়মতো না তৈরি হয়, তবে এটি পরবর্তী চক্রের জন্য অপেক্ষা করে। রিলিজ ব্রাঞ্চে অসম্পূর্ণ ফিচার ঠেলে দেওয়ার চেষ্টা সময়সীমা মিস এবং প্রোডাকশনে বাগের প্রধান কারণ।

মোবাইল প্রকল্পে ভার্সন আপডেট

রিলিজ ব্রাঞ্চে অ্যাপ্লিকেশন ভার্সন নম্বর বাধ্যতামূলকভাবে আপডেট করা হয়। Android-এর জন্য, এগুলি হল build.gradle-এ versionCode এবং versionName ফিল্ড; iOS-এর জন্য — Info.plist-এ CFBundleShortVersionString।

groovy
// build.gradle (অ্যাপ-লেভেল) — রিলিজ ব্রাঞ্চে ভার্সন আপডেট
android {
    defaultConfig {
        versionCode 42
        versionName "2.5.0"
    }
}

// iOS-এর জন্য — Info.plist আপডেট
// CFBundleShortVersionString = 2.5.0
// CFBundleVersion = 42

Release এবং hotfix-এর পার্থক্য

নতুন ডেভেলপাররা প্রায়ই release এবং hotfix ব্রাঞ্চকে গুলিয়ে ফেলেন, যদিও তাদের উদ্দেশ্য মৌলিকভাবে আলাদা। ভুল ব্রাঞ্চ ধরন নির্বাচন করা একটি গুরুতর সংশোধন বিলম্বিত করতে পারে বা রিলিজ প্রক্রিয়া ব্যাহত করতে পারে।

  • উৎস — release develop থেকে তৈরি হয়, hotfix main থেকে। এটি প্রধান পার্থক্য যা বাকি সবকিছু নির্ধারণ করে।
  • জরুরীতা — release পরিকল্পিত: টিম সিদ্ধান্ত নেয় কখন প্রস্তুতি শুরু করবে। Hotfix জরুরি: প্রোডাকশনে সমস্যার তাত্ক্ষণিক সংশোধন প্রয়োজন।
  • সামগ্রী — release একাধিক সংশোধন এবং ভার্সন আপডেট অন্তর্ভুক্ত করতে পারে। Hotfix শুধুমাত্র একটি গুরুতর সংশোধন ধারণ করে।
  • মার্জ — release main এবং develop-এ মার্জ হয়। Hotfix-ও main এবং develop-এ মার্জ হয়, তবে অগ্রাধিকার সহ।
  • জীবনকাল — release ১ থেকে ৭ দিন বেঁচে থাকে। Hotfix ৩০ মিনিট থেকে ১ দিন বেঁচে থাকে।

যদি রিলিজ প্রস্তুতির সময় (রিলিজ ব্রাঞ্চে) বাগ পাওয়া যায় — এটি সাধারণ বাগফিক্স। যদি প্রোডাকশনে (main-এ) বাগ পাওয়া যায় — এটি hotfix, এবং এটি main থেকে তৈরি হয়, এমনকি যদি রিলিজ ব্রাঞ্চ ইতিমধ্যে বিদ্যমান থাকে।

রিলিজ ব্রাঞ্চ নামকরণের নিয়ম

একীভূত রিলিজ ব্রাঞ্চ নামকরণ মান রিপোজিটরি নেভিগেশন সহজ করে এবং CI/CD সিস্টেমকে স্বয়ংক্রিয়ভাবে সনাক্ত করতে দেয় যে একটি ব্রাঞ্চ রিলিজ প্রক্রিয়ার সাথে সম্পর্কিত।

  • release/X.Y.Z — স্ট্যান্ডার্ড Git Flow ফরম্যাট, যেখানে X.Y.Z রিলিজ ভার্সন। উদাহরণ: release/2.5.0
  • release/নাম — রিলিজ কোডনেম সহ বিকল্প ফরম্যাট। উদাহরণ: release/merlin
  • release/তারিখ — রিলিজ তারিখ সহ ফরম্যাট। খুব কমই ব্যবহৃত হয়, কারণ ভার্সন তারিখের চেয়ে বেশি গুরুত্বপূর্ণ। উদাহরণ: release/2024-12-01

release/X.Y.Z ফরম্যাটটি পছন্দের, কারণ এটি ব্রাঞ্চকে সরাসরি ভার্সন নম্বরের সাথে সংযুক্ত করে যা রিলিজকে বরাদ্দ করা হবে। এটি CI/CD স্ক্রিপ্ট দ্বারা অনুসন্ধান এবং স্বয়ংক্রিয় প্রক্রিয়াকরণ সহজ করে।

develop-এ ফিরতি মার্জের কৌশল

রিলিজ ব্রাঞ্চের develop-এ ফিরতি মার্জ (merge back) সবচেয়ে গুরুত্বপূর্ণ এবং একইসাথে সবচেয়ে বেশি উপেক্ষিত অপারেশনগুলির মধ্যে একটি। এটি ছাড়া, রিলিজে করা সমস্ত বাগফিক্স শুধুমাত্র রিলিজ ভার্সনে থেকে যায় এবং পরবর্তী রিলিজ চক্রে পৌঁছায় না।

ফিরতি মার্জ প্রক্রিয়া রিলিজ ব্রাঞ্চ main-এ মার্জ হওয়ার পরে সম্পাদিত হয়। প্রথমে release develop-এ মার্জ করা হয়, তারপর মুছে ফেলা হয়। এটি নিশ্চিত করে যে develop-এ রিলিজ প্রস্তুতির সময় করা সমস্ত সংশোধন অন্তর্ভুক্ত রয়েছে।

ফিরতি মার্জের পরে দ্বন্দ্ব সম্ভব — বিশেষত যদি develop-এ ইতিমধ্যে নতুন ফিচার ব্রাঞ্চ দেখা দেয় যা একই ফাইলগুলি পরিবর্তন করেছিল। রিলিজের জন্য দায়ী ডেভেলপার এই দ্বন্দ্বগুলি সমাধান করে এবং develop সার্ভারে push করে।

কিছু টিম ইতিহাস রৈখিক রাখতে মার্জের পরিবর্তে ফিরতি মার্জের জন্য rebase ব্যবহার করে। তবে, develop-এর জন্য মার্জ নিরাপদ, কারণ এটি কমিট ইতিহাস পুনর্লিখন করে না যা ইতিমধ্যে অন্যান্য ডেভেলপারদের দ্বারা ব্যবহৃত হচ্ছে।

রিলিজ নিয়ে কাজ করার কমান্ড উদাহরণ

আসুন মোবাইল অ্যাপ্লিকেশন ভার্সন 2.5.0-এর সফল রিলিজের পরে রিলিজ ব্রাঞ্চের সাথে কাজ করার সম্পূর্ণ চক্র দেখি: তৈরি থেকে মুছে ফেলা পর্যন্ত।

bash
# 1. develop থেকে রিলিজ ব্রাঞ্চ তৈরি করুন
git checkout develop
git pull origin develop
git checkout -b release/2.5.0

# 2. ভার্সন এবং বাগফিক্স আপডেট করুন
git add build.gradle
git commit -m "Bump version to 2.5.0"

# 3. বাগ ঠিক করুন (শুধুমাত্র bugfixes)
git add src/fix/
git commit -m "Fix crash on payment screen"

# 4. রিলিজ ব্রাঞ্চ সার্ভারে পাঠান
git push origin release/2.5.0

# 5. release main-এ মার্জ করুন
git checkout main
git pull origin main
git merge --no-ff release/2.5.0
git tag -a v2.5.0 -m "Release 2.5.0"
git push origin main --tags

# 6. develop-এ ফিরতি মার্জ করুন
git checkout develop
git merge --no-ff release/2.5.0
git push origin develop

# 7. রিলিজ ব্রাঞ্চ মুছুন
git branch -d release/2.5.0
git push origin --delete release/2.5.0

কমান্ড ৫ এবং ৬ — ডাবল মার্জ — অত্যন্ত গুরুত্বপূর্ণ। প্রথমে main রিলিজ কোড এবং ট্যাগ পায়, তারপর develop রিলিজের বাগফিক্সের সাথে সিঙ্ক্রোনাইজ হয়। যদি ধাপ ৬ বাদ দেওয়া হয়, রিলিজের সংশোধনগুলি পরবর্তী উন্নয়ন চক্রে পৌঁছাবে না।

রিলিজ প্রক্রিয়া স্বয়ংক্রিয়করণ

নিয়মিত রিলিজযুক্ত মোবাইল প্রকল্পগুলির জন্য, রিলিজ ব্রাঞ্চ তৈরি এবং ভার্সন আপডেটের প্রক্রিয়া CI/CD স্ক্রিপ্টের মাধ্যমে স্বয়ংক্রিয় করা যেতে পারে। GitHub Actions একটি ওয়ার্কফ্লো তৈরি করতে দেয় যা বাটন চাপলে স্বয়ংক্রিয় ভার্সন আপডেট সহ রিলিজ ব্রাঞ্চ তৈরি করে।

নিয়মিত রিলিজযুক্ত মোবাইল প্রকল্পগুলির জন্য, রিলিজ ব্রাঞ্চ তৈরি এবং ভার্সন আপডেটের প্রক্রিয়া CI/CD স্ক্রিপ্টের মাধ্যমে স্বয়ংক্রিয় করা যেতে পারে। GitHub Actions একটি ওয়ার্কফ্লো তৈরি করতে দেয় যা বাটন চাপলে স্বয়ংক্রিয় ভার্সন আপডেট সহ রিলিজ ব্রাঞ্চ তৈরি করে।

yaml
# GitHub Actions — রিলিজ ব্রাঞ্চ তৈরির স্বয়ংক্রিয়করণ
name: Create Release Branch

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Release version (e.g. 2.5.0)'
        required: true

jobs:
  create-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Create release branch
        run: |
          git checkout develop
          git checkout -b release/${{ inputs.version }}
          git push origin release/${{ inputs.version }}

সচরাচর জিজ্ঞাসিত প্রশ্ন

একসাথে কয়টি রিলিজ ব্রাঞ্চ থাকতে পারে?

আপনি যদি Git Flow অনুসরণ করেন তবে একসাথে কেবল একটি রিলিজ ব্রাঞ্চ। দুটি সক্রিয় রিলিজ ব্রাঞ্চ থাকার অর্থ হল টিম সমান্তরালে দুটি রিলিজ প্রকাশের চেষ্টা করছে — এটি ক্রমিক রিলিজের নীতি লঙ্ঘন করে এবং ভার্সন নিয়ে বিভ্রান্তি সৃষ্টি করে।

রিলিজ ব্রাঞ্চে অসম্পূর্ণ ফিচার থাকলে কী করবেন?

git revert-এর মাধ্যমে রিলিজ ব্রাঞ্চ থেকে অসম্পূর্ণ ফিচারের কমিটগুলি সরান এবং পরবর্তী রিলিজ পর্যন্ত ফিচার স্থগিত করুন। কখনও অসম্পূর্ণ কার্যকারিতা প্রোডাকশনে প্রকাশ করবেন না — প্রযুক্তিগত ঋণ এবং সম্ভাব্য বাগ তাড়াহুড়োর মূল্য নয়।

রিলিজ ব্রাঞ্চ তৈরি করা বাদ দেওয়া যায়?

একক সংশোধন সহ সহজ রিলিজের জন্য, রিলিজ ব্রাঞ্চ বাদ দেওয়া যেতে পারে এবং সরাসরি develop থেকে main-এ মার্জ করা যেতে পারে। তবে, স্ট্যান্ডার্ড রিলিজের জন্য, রিলিজ ব্রাঞ্চ বাধ্যতামূলক — এটি ভার্সন ফিক্স করে, প্রস্তুতি আলাদা করে এবং বাগফিক্সের ডাবল মার্জ নিশ্চিত করে।

main ইতিমধ্যে মার্জ পেয়ে গেলে কীভাবে রিলিজ বাতিল করবেন?

সমস্ত রিলিজ পরিবর্তন পূর্বাবস্থায় ফেরাতে main-এ git revert ব্যবহার করুন। তারপর git push origin --delete vX.Y.Z কমান্ড দিয়ে রিলিজ ট্যাগ মুছুন। সমস্যাগুলি ঠিক করার পরে, বর্ধিত patch নম্বর সহ নতুন রিলিজ ব্রাঞ্চ তৈরি করুন।

Release candidate এবং release branch-এর মধ্যে পার্থক্য কী?

Release candidate (RC) একটি বিল্ড আর্টিফ্যাক্ট যা চূড়ান্ত পরীক্ষার মধ্য দিয়ে যায়। Release branch হল একটি Git ব্রাঞ্চ যা থেকে release candidate তৈরি করা হয়। একটি রিলিজ ব্রাঞ্চ একাধিক RC বিল্ড (RC1, RC2, ইত্যাদি) উৎপন্ন করতে পারে বাগগুলি ঠিক করার সাথে সাথে।

সারসংক্ষেপ

  • Release Branch — চূড়ান্ত রিলিজ প্রস্তুতির জন্য অস্থায়ী Git Flow ব্রাঞ্চ: ভার্সনিং, বাগফিক্স এবং লোকালাইজেশন নতুন ফিচার ছাড়া।
  • উন্নয়ন বিচ্ছিন্নকরণ — রিলিজ ব্রাঞ্চ একসঙ্গে রিলিজ প্রস্তুত এবং develop-এ পরবর্তী ফিচারগুলির উন্নয়ন চালিয়ে যাওয়ার অনুমতি দেয়।
  • ডাবল মার্জ — সম্পন্ন হওয়ার পর, release main-এ (রিলিজ ট্যাগ) এবং develop-এ (বাগফিক্স সিঙ্ক) মার্জ করা হয়।
  • নতুন ফিচার নিষিদ্ধ — রিলিজ ব্রাঞ্চে শুধুমাত্র সংশোধন এবং মেটাডেটা যোগ করা হয়। নতুন কার্যকারিতা পরবর্তী রিলিজে যায়।
  • নামকরণ — স্ট্যান্ডার্ড ফরম্যাট release/X.Y.Z SemVer ভার্সন নম্বর সহ।
  • develop-এ ফিরতি মার্জ একটি বাধ্যতামূলক পদক্ষেপ যা প্রায়ই উপেক্ষিত হয়, কিন্তু এটি ছাড়া রিলিজ বাগফিক্স ভবিষ্যতের ভার্সনের জন্য হারিয়ে যায়।
  • সুপারিশ: CI/CD-এর মাধ্যমে রিলিজ ব্রাঞ্চ তৈরি এবং ভার্সন আপডেট স্বয়ংক্রিয় করুন এবং ডাবল মার্জকে রিলিজ চেকলিস্টের বাধ্যতামূলক আইটেম করুন।

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

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

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

আরও পড়ুন