ট্যাগিং হলো একটি ফিচার যা ব্যবহার করা হয় একটি Git রিপোজিটরির ইতিহাসের নির্দিষ্ট পয়েন্ট ট্র্যাক রাখতে।
সময়ের সাথে সাথে, যখন আপনি একটি Git রিপোজিটরির সাথে কাজ করছেন, আপনি আপনার কোডবেসে একটি বড় সংখ্যক পরিবর্তন আনবেন। Git-এ, কমিটগুলো indywidual পরিবর্তন ট্র্যাক রাখতে ব্যবহৃত হয়।
যাইহোক, আপনি যদি আপনার রিপোজিটরির ইতিহাসের একটি পয়েন্ট ক্যাপচার করতে চান যেমন একটি ভার্সন, তবে আপনি Git ট্যাগিং ফিচার ব্যবহার করতে চাবেন।
এই টিউটোরিয়াল উদাহরণসহ ট্যাগিং-এর বেসিক এবং কীভাবে git tag কমান্ড ব্যবহার করে একটি Git রিপোজিটরিতে ট্যাগ নিয়ে কাজ করবেন তা আলোচনা করবে। এই টিউটোরিয়াল পড়ার শেষে, আপনি Git-এ ট্যাগ নিয়ে কাজ করার এক্সপার্ট হবেন।
Git Tagging
ট্যাগগুলো রেফারেন্স (refs) যেগুলো একটি Git রিপোজিটরির ইতিহাসের একটি নির্দিষ্ট অংশে পয়েন্ট করে।
ট্যাগগুলো সাধারণত ডেভেলপাররা ব্যবহার করে একটি রিপোজিটরির ইতিহাসের একটি নির্দিষ্ট পয়েন্ট ক্যাপচার করতে একটি ভার্সন রিলিজ তৈরি করতে। উদাহরণস্বরূপ, যখন একজন ডেভেলপার একটি প্রজেক্টের নতুন ভার্সন লঞ্চ করার জন্য প্রস্তুত, তারা প্রজেক্টের জন্য একটি ট্যাগ তৈরি করতে পারে।
সারসংক্ষেপে, ট্যাগগুলো ব্রাঞ্চের মতো যা পরিবর্তন হয় না। আপনি একটি ট্যাগ তৈরি করার পর, ট্যাগের ইতিহাসে আর কোনো কমিট যোগ হবে না। বদলে, ট্যাগটি একটি স্ন্যাপশট স্টোর করবে রিপোজিটরি কীভাবে দেখত যখন ট্যাগটি যোগ করা হয়েছিল।
Git-এ দুটি ভিন্ন টাইপের ট্যাগ সাপোর্ট করা থাকে। এগুলো হলো:
৮১% পার্টিসিপেন্ট заяви করেছেন যে বুটক্যাম্পে অংশগ্রহণের পর তাদের টেক জব প্রস্পেক্টস নিয়ে তারা আরও আত্মবিশ্বাসী মনে করছেন। আজই একটি বুটক্যাম্পে ম্যাচ করুন।
গড় বুটক্যাম্প গ্র্যাজুট ক্যারিয়ার ট্রানজিশনে ছয় মাসের কম সময় ব্যয় করেছেন, বুটক্যাম্প শুরু থেকে প্রথম জব পাওয়ার পর্যায়ে।
- অ্যানোটেটেড ট্যাগ। এগুলো ট্যাগ যেগুলো Git ডাটাবেসে ফুল অবজেক্ট হিসেবে স্টোর করা থাকে।
- লাইটওয়েট ট্যাগ। এগুলো ট্যাগ যেগুলো একটি নাম এবং একটি কমিটের পয়েন্টার।
এখন আমরা Git ট্যাগিং-এর বেসিক আলোচনা করেছি, এক্সপ্লোর করি কীভাবে আপনি Git-এ ট্যাগ নিয়ে কাজ করতে পারেন।
একটি ট্যাগ তৈরি করুন
Git-এ ট্যাগ নিয়ে কাজ করার আগে, আপনাকে একটি ট্যাগ তৈরি করতে হবে। Git-এ একটি ট্যাগ তৈরি করার সিনট্যাক্স নিচের মতো:
git tag <name>
"name" প্যারামিটারটি রেফার করে ট্যাগের নাম যেটি আপনি তৈরি করতে চান। যেহেতু ট্যাগিং সাধারণত একটি প্রজেক্টের ভার্সন ট্র্যাক রাখতে ব্যবহৃত হয়, আপনি "v1.2" বা "beta-v0.9" এর মতো নাম ব্যবহার করতে পারেন একটি ট্যাগের জন্য।
আপনি যে ট্যাগটি তৈরি করবেন সেটি আপনার রিপোজিটরিতে আপনি যে কমিটে আছেন সেটিতে অ্যাপ্লাই হবে।
অ্যানোটেটেড ট্যাগ
একটি অ্যানোটেটেড ট্যাগ হলো একটি ট্যাগ যা Git ডাটাবেসে একটি ফুল অবজেক্ট হিসেবে স্টোর করা থাকে। আপনি যখন একটি অ্যানোটেটেড ট্যাগ তৈরি করেন, মেটাডেটা যেমন ট্যাগ তৈরি করার ব্যক্তির নাম, তাদের ইমেইল, এবং ট্যাগটি তৈরি হওয়ার তারিখ স্টোর করা থাকবে।
অতিরিক্তভাবে, অ্যানোটেটেড ট্যাগগুলো ট্যাগের জন্য একটি মেসেজ সহ স্টোর করা থাকে। সাধারণভাবে কথা বললে, অ্যানোটেটেড ট্যাগগুলো লাইটওয়েট ট্যাগের চেয়ে পছন্দনীয় কারণ অ্যানোটেটেড ট্যাগ দ্বারা স্টোর করা মেটাডেটা ভবিষ্যতে অনেক কাজে লাগতে পারে।
উদাহরণস্বরূপ, আপনি যদি ট্র্যাক করতে চান কে ভার্সনিং-এর জন্য দায়ী সময়ের সাথে সাথে, আপনাকে অ্যানোটেটেড ট্যাগ দ্বারা স্টোর করা মেটাডেটার এক্সেস দরকার হবে।
Git-এ একটি অ্যানোটেটেড ট্যাগ তৈরি করার সিনট্যাক্স:
git tag -a <name>
-a ফ্ল্যাগটি Git-কে বলে একটি অ্যানোটেটেড ট্যাগ তৈরি করতে। "name" প্যারামিটারটি হলো ট্যাগের নাম যেটি আমরা তৈরি করতে চাই।
এই কমান্ড রান করার পর, সিস্টেম-ডিফল্ট টেক্স্ট এডিটর খুলবে এবং আমাদের থেকে আমাদের অ্যানোটেটেড ট্যাগের জন্য একটি মেসেজ ইনসার্ট করতে বলবে। এটি ঘটে কারণ, যেহেতু আমরা আগে আলোচনা করেছি, অ্যানোটেটেড ট্যাগগুলো একটি মেসেজ সহ স্টোর করা থাকে।
বিকল্পভাবে, আপনি সরাসরি সেই মেসেজ স্পেসিফাই করতে পারেন যেটির সাথে একটি ট্যাগ তৈরি হবে। আপনি এটি এই কোড দিয়ে করতে পারেন:
git tag -a <name> -m <message>
-m ট্যাগটি একটি অ্যানোটেটেড ট্যাগে একটি মেসেজ যোগ করতে ব্যবহৃত হয়। ধরা যাক আমরা "v1.9" নামে একটি ট্যাগ তৈরি করতে চাই মেসেজ "version 1.9" সহ। আমরা এটি এই কোড দিয়ে করতে পারি:
git tag -a v1.9 -m "version 1.9"
যখন আমরা এই কমান্ড রান করি, v1.9 নামে একটি ট্যাগ তৈরি হবে साथে মেসেজ "version 1.9"।
এই কমান্ড রান করা git tag মেসেজ ছাড়া ব্যবহার করার চেয়ে বেশি কনভেনিয়েন্ট, কারণ এই উপায়ে আমরা সরাসরি একটি কমিট মেসেজ স্পেসিফাই করতে পারি, ডিফল্ট টেক্স্ট এডিটরে টাইপ করতে ছাড়া যা ظاهر হয় যখন আপনি একটি কমিট মেসেজ স্পেসিফাই না করেন।
লাইটওয়েট ট্যাগ
একটি লাইটওয়েট ট্যাগ তৈরি করতে, আপনাকে সেই স্ট্যান্ডার্ড git tag সিনট্যাক্স ব্যবহার করতে হবে যা আমরা আগে আলোচনা করেছি। ধরা যাক আপনি "v1.9.1" নামে একটি লাইটওয়েট ট্যাগ তৈরি করতে চান। আপনি এটি এই কোড দিয়ে করতে পারেন:
git tag v1.9.1
এই কমান্ড v1.9.1 নামে একটি লাইটওয়েট ট্যাগ তৈরি করবে। আপনি যখন একটি লাইটওয়েট ট্যাগ তৈরি করেন, আপনাকে একটি ট্যাগ মেসেজ স্পেসিফাই করতে হয় না। বদলে, একটি নতুন ট্যাগ চেকসাম তৈরি ও স্টোর করা হবে প্রজেক্টের .git ফোল্ডারে।
একটি প্রজেক্টের ট্যাগ লিস্ট করুন
যখন আপনি একটি বড় প্রজেক্টে কাজ করছেন, আপনার রিপোজিটরির অনেক ট্যাগড ভার্সন থাকতে পারে। একটি প্রজেক্টের সাথে স্টোর করা ট্যাগের একটি লিস্ট রিট্রিভ করতে, আপনি নিচের কমান্ড ব্যবহার করতে পারেন:
git tag
এই কমান্ড ট্যাগের একটি লিস্ট রিটার্ন করে। এই কমান্ড থেকে একটি উদাহরণ আউটপুট:
v1.9.1 v1.9.0 v1.8.11 v1.8.10 v1.8.9 ...
অতিরিক্তভাবে, -l ফ্ল্যাগটি ব্যবহার করা যেতে পারে একটি প্রজেক্টের সাথে ব্যবহৃত ট্যাগ ফিল্টার আউট করতে। উদাহরণস্বরূপ, আপনি যদি প্রতিটি ট্যাগের একটি লিস্ট রিট্রিভ করতে চান যা "v1.8" দিয়ে শুরু হয়, আপনি এই কোড ব্যবহার করতে পারেন:
git tag -l v1.8*
আমাদের কমান্ডে, আমরা একটি -l ফ্ল্যাগ স্পেসিফাই করেছি, যেগুলোর পর "v1.8*"। এটি Git-কে ইনস্ট্রাক্ট করে v1.8 দিয়ে শুরু হওয়া সকল ট্যাগের একটি লিস্ট রিট্রিভ করতে। অ্যাসটেরিস্ক (*) ডেনোট করে যে রিটার্ন হওয়া ট্যাগগুলো "v1.8"-এর পর যেকোনো ক্যারেক্টার অন্তর্ভুক্ত করতে পারে।
এই কমান্ড থেকে একটি উদাহরণ আউটপুট:
v1.8.11 v1.8.10 v1.8.9 v1.8.8 ...
আপনি দেখতে পাচ্ছেন, রিটার্ন করা সব ট্যাগ "v1.8" দিয়ে শুরু হয়।
একটি ট্যাগ চেকআউট করুন
git checkout কমান্ড ব্যবহার করা যেতে পারে একটি রিপোজিটরির স্টেট ভিউ করার জন্য একটি নির্দিষ্ট ট্যাগ সহ কমিটে। উদাহরণস্বরূপ, ধরা যাক আপনি আপনার রিপোজিটরি ভিউ করতে চান যখন সেটি v1.1-এ ছিল। আপনি এটি এই কোড দিয়ে করতে পারেন:
git checkout v1.1
এই কমান্ড রিপোজিটরিকে একটি "detached HEAD" স্টেটে মুভ করায়, যার মানে আপনি যে কোনো পরিবর্তন করবেন সেটি ট্যাগড ভার্সন অফ দ্য রিপোজিটরি আপডেট করবে না। বদলে, একটি নতুন detached কমিট তৈরি হবে যেটি যেকোনো ব্রাঞ্চের সাথে asoshiated হবে না।
এই কমান্ড রান করার পর, আমরা দেখতে পাই আমাদের কোডবেস কীভাবে দেখত কমিটে যেটি v1.1 ট্যাগ করা হয়েছিল।
পুরনো কমিট ট্যাগ করুন
আমাদের পূর্বের উদাহরণগুলতে, আমরা আলোচনা করেছি কীভাবে git tag ফাংশন ব্যবহার করতে হয় করেন্ট ভার্সন অফ git-এ একটি ট্যাগ যোগ করতে যেটি আপনি কাজ করছেন। এটি কারণ, ডিফল্টভাবে, git tag HEAD কমিটের (যে কমিটটি আপনি বর্তমানে ভিউ করছেন) জন্য একটি ট্যাগ তৈরি করবে।
যাইহোক, আপনি পুরনো কমিটও ট্যাগ করতে পারেন git tag কমান্ড ব্যবহার করে। আপনি এটি করতে পারেন একটি নির্দিষ্ট কমিটের রেফারেন্স স্পেসিফাই করে যেটিতে আপনি একটি ট্যাগ যোগ করতে চান।
ধরা যাক আপনি আপনার রিপোজিটরির লাস্ট কমিটে একটি ট্যাগ যোগ করতে চান। এটি করতে, আপনাকে প্রথমে git log রান করতে হবে। এটি আপনাকে সাম্প্রতিক কমিটের একটি লিস্ট রিট্রিভ করতে দেবে। এখানে git log কমান্ডের একটি উদাহরণ (with the –pretty=oneline flag, যা আমাদের জন্য কমিটগুলো দেখতে সহজ করে):
git log --pretty=oneline
আমাদের কমান্ড রিটার্ন করে:
8cd29ae5d04abbdbd856d2c2f55f2b82133903e8 Push new logging feature 2911aae73ed1dd372bcdf8f520b174c3817c818b Initialize logging feature 9646aa785211f3069ce01177da98e23b7890d859 Fix issue #342
এখন, ধরা যাক আমরা আমাদের "Fix issue #342" কমিটে একটি ট্যাগ যোগ করতে চাই। আমরা এই ট্যাগকে "v1.3" বলে ডাকব। আমরা এই ট্যাগটি এই কোড দিয়ে যোগ করতে পারি:
git tag -a v1.3 9646aa785211f3069ce01177da98e23b7890d859
এই কমান্ড আমাদের কোডে রেফারেন্স করা কমিটে 1.3 ট্যাগ যোগ করে। এই কেসে, আমরা SHA hash স্পেসিফাই করেছি "Fix issue #342" মেসেজ সহ কমিটের জন্য।
পুরনো ট্যাগ রিপ্লেস করুন
প্রতিটি কমিটে শুধু একটি ট্যাগ থাকতে পারে। আপনি যদি সিদ্ধান্ত নেন যে আপনি একটি কমিটের সাথে যুক্ত ট্যাগকে অন্য একটি ট্যাগ দিয়ে রিপ্লেস করতে চান, আপনি এটি git tag ব্যবহার করে করতে পারেন। যাইহোক, আপনাকে অবশ্যই -f (force) অপশন স্পেসিফাই করতে হবে, যা বিদ্যমান ট্যাগকে ইন-প্লেস ওভাররাইড করবে
ধরা যাক আমরা আমাদের পূর্বের উদাহরণে আলোচনা করা কমিটে "v1.3.1" ট্যাগ যোগ করতে চাই। যদি আমরা -f ফ্ল্যাগ ছাড়া করার চেষ্টা করি, একটি এরর মেসেজ ظاهر হবে। আমাদের পূর্বের কমিটে "v1.3.1" ট্যাগ যোগ করতে, আমরা এই কমান্ড ব্যবহার করতে পারি:
git tag -a -f v1.3.1 9646aa785211f3069ce01177da98e23b7890d859
এই কমান্ড আমাদের কমিটে "v1.3.1" ট্যাগ যোগ করে এবং আমাদের পূর্বের "v1.3" ট্যাগ ওভাররাইড করে।
একটি ট্যাগ ডিলিট করুন
Git ব্যবহার করে একটি ট্যাগ ডিলিট করতে, আপনি -d ফ্ল্যাগ ব্যবহার করতে পারেন। ধরা যাক আমরা আমাদের রিপোজিটরি থেকে "v1.3" ট্যাগ ডিলিট করতে চাই। আমরা এটি এই কোড দিয়ে করতে পারি:
git tag -d v1.3 git tag
আমাদের কোড রিটার্ন করে:
v1.4 v1.2 v1.1
প্রথম কমান্ড v1.3 ট্যাগটি আমাদের রিপোজিটরি থেকে ডিলিট করে। দ্বিতীয় কমান্ড ট্যাগের একটি লিস্ট রিটার্ন করে। আপনি দেখতে পাচ্ছেন, যখন আমরা ট্যাগের একটি লিস্ট রিট্রিভ করি, ট্যাগ v1.3 অনুপস্থিত। এটি কারণ আমরা -d ফ্ল্যাগ ব্যবহার করে ট্যাগটি ডিলিট করেছি।
উপসংহার
ট্যাগিং Git-এ একটি গুরুত্বপূর্ণ ফিচার যা ডেভেলপাররা ব্যবহার করে একটি Git রিপোজিটরির বিভিন্ন ভার্সন ট্র্যাক রাখতে। ট্যাগগুলো যোগ করা যেতে পারে করেন্ট কমিটে যেটি একজন ডেভেলপার ভিউ করছে, বা একটি রিপোজিটরিতে একটি বিদ্যমান কমিটে।
এই টিউটোরিয়াল উদাহরণসহ আলোচনা করেছে Git-এ ট্যাগিং-এর বেসিক এবং Git tag কমান্ড কীভাবে ব্যবহার করতে হয়। এখন আপনি git tag কমান্ড প্রফেশনাল ডেভেলপারের মতো ব্যবহার করার জন্য প্রস্তুত!