Git-এ রিপজিটরি: এটি কী, কী কী প্রকার আছে এবং কীভাবে কাজ করে

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

Git রিপজিটরি — প্রকল্পের সোর্স কোডের ভাণ্ডার, যেখানে Git ডেভেলপমেন্ট জুড়ে ফাইলের প্রতিটি পরিবর্তন ট্র্যাক করে। রিপজিটরিতে কমিট, ব্রাঞ্চ এবং ট্যাগের সম্পূর্ণ ইতিহাস থাকে, যা ডেভেলপারদের কোডে একসাথে কাজ করতে দেয়। Git, 2024 অনুসারে, রিপজিটরি যেকোনো ভার্সন কন্ট্রোল সিস্টেমের ভিত্তি এবং সারা বিশ্বের লক্ষ লক্ষ প্রকল্পে ব্যবহৃত হয়।

মূল বিষয়

  • Git রিপজিটরি — প্রকল্প ডিরেক্টরি যেখানে .git সার্ভিস ফোল্ডার থাকে এবং পরিবর্তনের পুরো ইতিহাস সংরক্ষিত হয়।
  • লোকাল রিপজিটরি — ডেভেলপারের কম্পিউটারে থাকে এবং ইন্টারনেট সংযোগ ছাড়াই কোডে কাজ করতে দেয়।
  • রিমোট রিপজিটরি — GitHub, GitLab বা Bitbucket সার্ভারে হোস্ট করা হয় এবং অংশগ্রহণকারীদের মধ্যে সিঙ্ক্রোনাইজেশনের জন্য কাজ করে।
  • Git — ডেটা পরিবর্তনের তালিকা হিসেবে নয়, বরং ফাইলের স্ন্যাপশট হিসেবে সংরক্ষণ করে, যা ব্রাঞ্চিং এবং মার্জিং অপারেশন দ্রুত করে।
  • ভার্সন কন্ট্রোল সিস্টেম — একই প্রকল্পে একসাথে কাজ করার সমস্যা সমাধান করে, কোড মার্জ করার সময় দ্বন্দ্ব প্রতিরোধ করে।

Git-এ রিপজিটরি কী

Git রিপজিটরি — একটি ডেটা স্ট্রাকচার যেখানে ভার্সন কন্ট্রোল সিস্টেম প্রকল্প ফাইলের পরিবর্তনের ইতিহাস বর্ণনাকারী মেটাডেটা এবং অবজেক্ট সংরক্ষণ করে। যখন একজন ডেভেলপার git init কমান্ড দিয়ে রিপজিটরি ইনিশিয়ালাইজ করে, Git প্রকল্প রুটে একটি লুকানো ফোল্ডার .git তৈরি করে।

এই ফোল্ডারের ভিতরে সিস্টেমের কাজ করার জন্য প্রয়োজনীয় সমস্ত অবজেক্ট, রেফারেন্স এবং কনফিগারেশন ফাইল থাকে। রিপজিটরি কোনো নির্দিষ্ট অবস্থানের সাথে বাঁধা নয় — ডেভেলপার এটি স্থানীয়ভাবে তৈরি করে পরে একটি রিমোট সার্ভারের সাথে লিঙ্ক করতে পারে।

Git একটি বিতরণকৃত রিপজিটরি মডেল ব্যবহার করে: প্রকল্পের প্রতিটি সদস্যের নিজের কম্পিউটারে ইতিহাসের সম্পূর্ণ কপি থাকে। এর মানে হল যে বেশিরভাগ অপারেশন — কমিট, ইতিহাস দেখা, ব্রাঞ্চ তৈরি করা — সার্ভারের সাথে যোগাযোগ না করেই স্থানীয়ভাবে সম্পাদিত হয়।

Git ডকুমেন্টেশন অনুসারে, বিতরণকৃত আর্কিটেকচার সিস্টেমকে ত্রুটি-সহনশীল করে তোলে: যদি সার্ভার ডাউন হয়, যেকোনো লোকাল রিপজিটরি প্রকল্পের সম্পূর্ণ ইতিহাস পুনরুদ্ধারের উৎস হতে পারে।

লোকাল এবং রিমোট রিপজিটরি

লোকাল রিপজিটরি — ডেভেলপারের কম্পিউটারে প্রকল্পের একটি কপি। এতে কমিট, ব্রাঞ্চ এবং ট্যাগের সম্পূর্ণ ইতিহাস থাকে এবং নেটওয়ার্ক সংযোগ ছাড়াই commit, branch, merge এবং rebase অপারেশন করতে দেয়।

রিমোট রিপজিটরি — সার্ভারে হোস্ট করা হয় এবং টিমের সকল সদস্যের জন্য সিঙ্ক্রোনাইজেশন পয়েন্ট হিসেবে কাজ করে। ডেভেলপাররা git push কমান্ড দিয়ে তাদের পরিবর্তন পাঠায় এবং git pull কমান্ড দিয়ে অন্যদের পরিবর্তন নেয়।

লোকাল এবং রিমোট রিপজিটরির মধ্যে সংযোগ remote origin — Git কনফিগারেশনে সংরক্ষিত সার্ভার URL — এর মাধ্যমে কনফিগার করা হয়। একটি লোকাল রিপজিটরি একাধিক রিমোটের সাথে লিঙ্ক করা যেতে পারে, যা ফোর্‌কের সাথে কাজ করার সময় উপযোগী।

এই মডেলের প্রধান সুবিধা হল ডেভেলপার অফলাইন মোডে কোডে কাজ করতে পারে এবং ফলাফল পাঠাতে প্রস্তুত হলে শুধুমাত্র তখনই পরিবর্তন সিঙ্ক্রোনাইজ করতে পারে।

লোকাল এবং রিমোট রিপজিটরির মধ্যে পার্থক্য

বৈশিষ্ট্যলোকালরিমোট
অবস্থানডেভেলপারের কম্পিউটারেসার্ভারে (GitHub, GitLab)
নেটওয়ার্ক ছাড়া প্রবেশসকল অপারেশনে পূর্ণ প্রবেশসংযোগ ছাড়া অনুপলব্ধ
সিঙ্ক্রোনাইজেশনরিমোটের সাথে Push/Pullলোকাল থেকে push গ্রহণ করে
ব্যাকআপডেটা ক্ষতি থেকে সুরক্ষিত নয়ব্যাকআপসহ সার্ভারে সংরক্ষিত

Git রিপজিটরিতে ডেটা কীভাবে সংরক্ষণ করে

Git-এর স্টোরেজ মডেল অন্যান্য ভার্সন কন্ট্রোল সিস্টেম থেকে মৌলিকভাবে ভিন্ন। সংস্করণগুলোর মধ্যে পরিবর্তনের তালিকা (ডেল্টা) সংরক্ষণ না করে, Git প্রতিটি কমিটের সময় প্রকল্পের সব ফাইলের সম্পূর্ণ স্ন্যাপশট সংরক্ষণ করে।

রিপজিটরির প্রতিটি অবজেক্ট একটি অনন্য ৪০-অক্ষরের SHA-1 হ্যাশ দ্বারা চিহ্নিত করা হয়। যদি ফাইলের বিষয়বস্তু কমিটের মধ্যে পরিবর্তিত না হয়, Git নতুন অবজেক্ট তৈরি করে না বরং বিদ্যমানটি পুনরায় ব্যবহার করে — এটি জায়গা বাঁচায়।

Git চার ধরনের অবজেক্ট ব্যবহার করে: blob (ফাইল বিষয়বস্তু), tree (ডিরেক্টরি কাঠামো), commit (মেটাডেটাসহ স্ন্যাপশট) এবং tag (কমিটের নামকরণকৃত রেফারেন্স)। সব অবজেক্ট .git/objects ফোল্ডারে সংরক্ষিত হয়।

Git Internals অনুসারে, Git-এর অবজেক্ট মডেল ডেটা অখণ্ডতা নিশ্চিত করে: ফাইল বিষয়বস্তুর যেকোনো পরিবর্তন নতুন হ্যাশ তৈরি করে, যা ইতিহাসে অলক্ষিত পরিবর্তন করা অসম্ভব করে তোলে।

.git ফোল্ডারের কাঠামো

.git ফোল্ডার হল রিপজিটরির হৃদয়। এটি ছাড়া Git পরিবর্তন ট্র্যাক করতে পারে না, এবং সাধারণ ডিরেক্টরি শুধু ফাইলের একটি সংগ্রহ থাকে। এই ফোল্ডারের কাঠামো বোঝা রিপজিটরি সমস্যা নির্ণয়ে সহায়তা করে।

  • objects/ — রিপজিটরির সব অবজেক্ট: blobs, trees, commits, tags। সংকুচিত আকারে সংরক্ষিত।
  • refs/ — কমিটের রেফারেন্স: heads (ব্রাঞ্চ), tags (লেবেল), remotes (রিমোট ব্রাঞ্চ)।
  • HEAD — ফাইল যা বর্তমান সক্রিয় ব্রাঞ্চ বা কমিট নির্দেশ করে।
  • config — রিপজিটরি সেটিংস: remote URL, ব্যবহারকারীর নাম, ইমেইল এবং অন্যান্য প্যারামিটার।
  • index — স্টেজিং এরিয়া যেখানে Git কমিটের জন্য প্রস্তুত ফাইল সম্পর্কে তথ্য সংরক্ষণ করে।
  • logs/ — রেফারেন্স আপডেট লগ (reflog) যা HEAD এবং ব্রাঞ্চের চলাফেরার ইতিহাস সংরক্ষণ করে।

HEAD ফাইলটি বিশেষ মনোযোগের দাবি রাখে। সাধারণ অবস্থায় এতে একটি ব্রাঞ্চের প্রতীকী রেফারেন্স থাকে, যেমন ref: refs/heads/main। detached HEAD অবস্থায় এটি সরাসরি একটি কমিট নির্দেশ করে — এর মানে নতুন কমিট কোনো ব্রাঞ্চের সাথে সংযুক্ত হবে না।

রিপজিটরির সাথে মৌলিক অপারেশন

Git রিপজিটরি নিয়ে কাজ করার জন্য মৌলিক অপারেশনের একটি সেট অন্তর্ভুক্ত যা ডেভেলপার প্রতিদিন করে। প্রতিটি অপারেশন নতুন অবজেক্ট যোগ করে বা রেফারেন্স সরিয়ে রিপজিটরির অবস্থা পরিবর্তন করে।

  • git init — বর্তমান ডিরেক্টরিতে একটি নতুন খালি রিপজিটরি তৈরি করে। Git প্রাথমিক কাঠামো সহ .git ফোল্ডার তৈরি করে।
  • git clone — বিদ্যমান রিমোট রিপজিটরি সম্পূর্ণ কমিট ইতিহাসসহ লোকাল মেশিনে কপি করে।
  • git add — ফাইলের পরিবর্তন স্টেজিং এরিয়ায় (ইন্ডেক্স) যোগ করে, কমিটের জন্য প্রস্তুত করে।
  • git commit — ইন্ডেক্স থেকে ডেটার ভিত্তিতে প্রকল্পের স্ন্যাপশট তৈরি করে এবং এটি নতুন কমিট অবজেক্ট হিসেবে সংরক্ষণ করে।
  • git push — লোকাল রিপজিটরি থেকে রিমোট রিপজিটরিতে নতুন কমিট পাঠায়, সার্ভারে ব্রাঞ্চ আপডেট করে।
  • git pull — রিমোট রিপজিটরি থেকে নতুন কমিট নিয়ে আসে এবং বর্তমান লোকাল ব্রাঞ্চের সাথে মার্জ করে।

push এবং pull অপারেশনই একমাত্র যেগুলোর জন্য রিমোট সার্ভারের সাথে সংযোগ প্রয়োজন। অন্যান্য সব অপারেশন সম্পূর্ণরূপে স্থানীয়ভাবে সম্পাদিত হয়, যা বড় ইতিহাসের পরিমাণেও উচ্চ গতি নিশ্চিত করে।

রিপজিটরিতে ফাইলের জীবনচক্র

রিপজিটরির প্রতিটি ফাইল চারটি অবস্থার মধ্য দিয়ে যায়: untracked (ট্র্যাক না করা), modified (পরিবর্তিত), staged (প্রস্তুত) এবং committed (কমিটকৃত)। Git শুধুমাত্র সেই ফাইলগুলোকেই ট্র্যাক করে যা git add-এর মাধ্যমে স্পষ্টভাবে যোগ করা হয়েছে বা যা ইতিমধ্যে কমিট ইতিহাসে আছে।

এই মডেল বোঝাই Git-এর সাথে কার্যকরভাবে কাজ করার চাবিকাঠি। ডেভেলপার বাছাই করে শুধুমাত্র পরিবর্তিত ফাইলের একটি অংশ কমিটের জন্য প্রস্তুত করতে পারে, স্পষ্ট বিবরণ সহ লজিক্যালি সম্পূর্ণ কমিট তৈরি করতে পারে।

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

  • GitHub — ১০০ মিলিয়নেরও বেশি রিপজিটরি সহ সবচেয়ে বড় প্ল্যাটফর্ম। Actions, Pull Requests, Issues এবং Wiki সরবরাহ করে। পাবলিক প্রকল্পের জন্য বিনামূল্য।
  • GitLab — সমন্বিত CI/CD, Container Registry এবং বিল্ট-ইন DevOps পাইপলাইন সহ প্ল্যাটফর্ম। SaaS এবং self-hosted সংস্করণ হিসেবে উপলব্ধ।
  • Bitbucket — Jira এবং Trello ইন্টিগ্রেশন সহ Atlassian-এর সমাধান। নমনীয় অ্যাক্সেস সেটিংসের কারণে কর্পোরেট পরিবেশে জনপ্রিয়।

প্ল্যাটফর্মের পছন্দ টিমের আকার, গোপনীয়তার প্রয়োজনীয়তা এবং প্রয়োজনীয় ইন্টিগ্রেশনের উপর নির্ভর করে। মোবাইল ডেভেলপমেন্টের জন্য প্রায়শই GitHub বেছে নেওয়া হয় এর বিস্তৃত কমিউনিটি সমর্থন এবং iOS ও Android-এর জন্য CI/CD টুলের সাথে ইন্টিগ্রেশনের কারণে।

রিপজিটরির সাথে কাজ করার কমান্ড উদাহরণ

একটি ব্যবহারিক পরিস্থিতি বিবেচনা করি: একজন ডেভেলপার বিদ্যমান রিপজিটরি ক্লোন করে, একটি নতুন ব্রাঞ্চ তৈরি করে, পরিবর্তন করে এবং সেগুলো সার্ভারে পাঠায়। প্রতিটি কমান্ড রিপজিটরির বিভিন্ন উপাদানের সাথে কাজ প্রদর্শন করে।

bash
# একটি রিমোট রিপজিটরি ক্লোন করা
git clone https://github.com/user/mobile-app.git

# প্রকল্প ডিরেক্টরিতে নেভিগেট করা
cd mobile-app

# একটি নতুন ফিচার ব্রাঞ্চ তৈরি করে তাতে স্যুইচ করা
git checkout -b feature/auth

# পরিবর্তিত ফাইলের অবস্থা পরীক্ষা করা
git status

# সব পরিবর্তন স্টেজিং এরিয়ায় যোগ করা
git add .

# বিবরণ সহ একটি কমিট তৈরি করা
git commit -m "Add authentication module"

# রিমোট রিপজিটরিতে পরিবর্তন পাঠানো
git push origin feature/auth

git status কমান্ডটি দৈনন্দিন কাজে সবচেয়ে উপযোগী কমান্ডগুলোর একটি। এটি দেখায় কোন ফাইল পরিবর্তিত হয়েছে, কোনটি কমিটের জন্য প্রস্তুত এবং কোনটি Git দ্বারা একেবারেই ট্র্যাক করা হচ্ছে না।

কমিট ইতিহাস দেখা

রিপজিটরি ইতিহাস বিশ্লেষণের জন্য git log কমান্ড বিভিন্ন ফর্ম্যাটিং ফ্ল্যাগ সহ ব্যবহার করা হয়। এটি কমিটের কালানুক্রম, তাদের লেখক, তারিখ এবং SHA-1 শনাক্তকারী প্রদর্শন করে।

bash
# ব্রাঞ্চ গ্রাফ ভিজুয়ালাইজেশনসহ ইতিহাস দেখা
git log --oneline --graph --all

# একটি নির্দিষ্ট কমিটে পরিবর্তন দেখা
git show a1b2c3d

# বর্তমান অবস্থা শেষ কমিটের সাথে তুলনা করা
git diff HEAD

# একটি নির্দিষ্ট ফাইলের ইতিহাস দেখা
git log --follow src/MainActivity.kt

--graph ফ্ল্যাগ ব্রাঞ্চিং-এর ASCII গ্রাফ প্রদর্শন করে, যা একাধিক ব্রাঞ্চে সক্রিয় কাজ সহ রিপজিটরিতে বিশেষভাবে উপযোগী। ঘন ঘন রিলিজযুক্ত মোবাইল প্রকল্পের জন্য, ভিজুয়াল গ্রাফ ডেভেলপমেন্ট কাঠামো দ্রুত মূল্যায়ন করতে সাহায্য করে।

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

রিপজিটরি প্রকল্প থেকে কীভাবে আলাদা?

রিপজিটরি পরিবর্তনের ইতিহাসসহ কোডের একটি প্রযুক্তিগত ভাণ্ডার। প্রকল্প একটি বিস্তৃত ধারণা যা রিপজিটরি, টাস্ক ম্যানেজমেন্ট সিস্টেম, ডকুমেন্টেশন এবং ডেভেলপমেন্ট প্রক্রিয়া অন্তর্ভুক্ত করে। একটি প্রকল্পে একাধিক রিপজিটরি থাকতে পারে।

GitHub-এ রিপজিটরি কীভাবে তৈরি করবেন?

New বাটনে ক্লিক করে GitHub ওয়েব ইন্টারফেসের মাধ্যমে একটি নতুন রিপজিটরি তৈরি করুন। নাম, বিবরণ এবং অ্যাক্সেস স্তর নির্দিষ্ট করুন। তারপর রিপজিটরিটি লোকাল মেশিনে ক্লোন করুন বা git remote add origin-এর মাধ্যমে বিদ্যমান লোকাল রিপজিটরির সাথে লিঙ্ক করুন।

মুছে ফেলা রিপজিটরি পুনরুদ্ধার করা যাবে?

যদি রিমোট রিপজিটরি সার্ভার থেকে মুছে ফেলা হয় কিন্তু অন্তত একজন ডেভেলপারের কাছে লোকাল কপি থাকে, তাহলে রিপজিটরি পুনরুদ্ধার করা যাবে। শুধু একটি নতুন রিমোট রিপজিটরি তৈরি করুন এবং সম্পূর্ণ ইতিহাসসহ লোকাল কপি থেকে git push --force নির্বাহ করুন।

রিপজিটরি ফোর্‍ক কী?

ফোর্‍ক হল আপনার অ্যাকাউন্টে অন্য কারও রিপজিটরির একটি কপি। আপনি ইতিহাসের সম্পূর্ণ কপি পান এবং মূলকে প্রভাবিত না করেই যেকোনো পরিবর্তন করতে পারেন। ফোর্‍ক Pull Request-এর মাধ্যমে ওপেন-সোর্স প্রকল্পে অংশগ্রহণের জন্য ব্যবহৃত হয়।

রিপজিটরির আকার কীভাবে কমানো যায়?

অবজেক্ট কম্প্রেস এবং অপ্রাপ্য ডেটা অপসারণ করতে git gc ব্যবহার করুন। git filter-branch বা git filter-repo-এর মাধ্যমে ইতিহাস থেকে বড় ফাইল সরান। বাইনারি ফাইলযুক্ত প্রকল্পের জন্য Git LFS (Large File Storage) বিবেচনা করুন।

সারসংক্ষেপ

  • Git রিপজিটরি — সম্পূর্ণ পরিবর্তন ইতিহাসসহ কোড ভাণ্ডার, যেখানে প্রতিটি কমিট একটি নির্দিষ্ট সময়ে প্রকল্পের সকল ফাইলের স্ন্যাপশট।
  • লোকাল রিপজিটরি — ডেভেলপারের কম্পিউটারে সংরক্ষিত এবং নেটওয়ার্ক সংযোগ ছাড়াই Git অপারেশনের সম্পূর্ণ সেট সমর্থন করে।
  • রিমোট রিপজিটরি — push এবং pull-এর মাধ্যমে টিমের কাজ সিঙ্ক্রোনাইজ করে, সকল অংশগ্রহণকারীর জন্য একক সত্য উৎস সরবরাহ করে।
  • .git ফোল্ডার — এতে সমস্ত সার্ভিস তথ্য থাকে: অবজেক্ট, ব্রাঞ্চ রেফারেন্স, কনফিগারেশন এবং reflog অপারেশন জার্নাল।
  • GitHub, GitLab এবং Bitbucket — অতিরিক্ত CI/CD টুলসহ রিমোট রিপজিটরি হোস্ট করার প্রধান প্ল্যাটফর্ম।
  • Git-এর অবজেক্ট মডেল — প্রতিটি অবজেক্ট শনাক্ত করতে SHA-1 হ্যাশ ব্যবহার করে, যা রিপজিটরি ডেটা অখণ্ডতা নিশ্চিত করে।
  • সুপারিশ: দিনে অন্তত একবার কমিট করুন এবং কাজের প্রতিটি ধাপ শেষে রিমোট রিপজিটরির সাথে সিঙ্ক্রোনাইজ করুন।

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

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

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

আরও পড়ুন