Menu
৩.৩ঃ গিট ব্রাঞ্চিং – ব্রাঞ্চ ব্যবস্থাপনা
ব্রাঞ্চ ব্যবস্থাপনা
এখন যেহেতু আপনি কিছু ব্রাঞ্চ তৈরি করেছেন, মার্জ করেছেন এবং কিছু ব্রাঞ্চ ডিলিট করেছেন, আসুন কিছু ব্রাঞ্চ-ব্যবস্থাপনা টুল দেখি যা আপনি যখন সব সময় ব্রাঞ্চ ব্যবহার করা শুরু করেন তখন কাজে আসবে। git branch কমান্ড শুধু ব্রাঞ্চ তৈরি এবং মুছে ফেলার চেয়েও বেশি কিছু করে। আপনি যদি কোন কারণ ছাড়াই এটি চালান তবে আপনি আপনার বর্তমান শাখাগুলির একটি সহজ তালিকা পাবেন:
$ git branch
iss53
* master
testing
* অক্ষরটি লক্ষ্য করুন যা master ব্রাঞ্চের প্রিফিক্স হিসেবে রয়েছে: এটি সেই ব্রাঞ্চটিকে নির্দেশ করে যেটি আপনি বর্তমানে চেক আউট করেছেন (অর্থাৎ, HEAD যে শাখার দিকে নির্দেশ করে)। এর মানে হল যে আপনি যদি এই মুহুর্তে কমিট করেন, master ব্রাঞ্চটি আপনার নতুন কাজের সাথে এগিয়ে যাবে। প্রতিটি ব্রাঞ্চে শেষ কমিট দেখতে, আপনি চালাতে পারেন
$ git branch -v
iss53 93b412c Fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 Add scott to the author list in the readme
প্রয়োজনীয় –merged এবং –no-merged অপশনগুলি আপনি বর্তমানে যে ব্রাঞ্চে আছেন সেই ব্রাঞ্চে আপনি মার্জ করেছেন বা করেননি এমন ব্রাঞ্চগুলোকে তালিকাটিকে ফিল্টার করতে পারে।৷ আপনি যে ব্রাঞ্চে আছেন সেখানে কোন ব্রাঞ্চগুলি ইতিমধ্যেই মার্জ হয়েছে তা দেখতে, আপনি git branch –merged চালাতে পারেনঃ
$ git branch --merged
iss53
* master
যেহেতু আপনি ইতিমধ্যেই iss53-এ মার্জ করেছেন, আপনি এটি আপনার তালিকায় দেখতে পাচ্ছেন। এই তালিকায় থাকা শাখাগুলি তাদের সামনে * ছাড়াই সাধারণত git branch -d দিয়ে মুছে ফেলা ভালো; আপনি ইতিমধ্যে তাদের কাজ অন্য শাখায় অন্তর্ভুক্ত করেছেন, তাই আপনি কিছু হারাতে যাচ্ছেন না।
আপনি এখনও মার্জ করেননি, কাজ রয়েছে এমন সমস্ত ব্রাঞ্চ দেখতে, git branch –no-merged কমান্ডটি চালাতে পারেনঃ
আপনি এখনও মার্জ করেননি, কাজ রয়েছে এমন সমস্ত ব্রাঞ্চ দেখতে, git branch –no-merged কমান্ডটি চালাতে পারেনঃ
$ git branch --no-merged
testing
এটি আপনার অন্য ব্রাঞ্চ দেখায়। কারণ এটিতে এমন কাজ রয়েছে যা এখনও মার্জ হয়নি, git branch -d দিয়ে এটি মুছে ফেলার চেষ্টা করা ব্যর্থ হবেঃ
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
আপনি যদি সত্যিই ব্রাঞ্চটি মুছে ফেলতে চান এবং সেই কাজটি হারাতে চান, তবে আপনি এটিকে -D দিয়ে জোর করতে পারেন, ঠিক যেমনটা সহায়ক মেসেজটি নির্দেশ করে।
নোট
উপরে বর্ণিত অপশানগুলি, –merged এবং –no-merged হবে,
যদি একটি আর্গুমেন্ট হিসাবে একটি কমিট বা ব্রাঞ্চের নাম না দেওয়া হয়, তাহলে আপনাকে দেখাবে যে, যথাক্রমে, আপনার বর্তমান ব্রাচে মার্জ হয়েছে অথবা হয়নি এমনটা প্রদর্শন করবে।
অন্যান্য ব্রাঞ্চের ক্ষেত্রে মার্জের অবস্থা জানার জন্যে আপনি সর্বদাই একটি অতিরিক্ত আর্গুমেন্ট সরবরাহ করতে পারবেন প্রথম ব্রাঞ্চটি চেক না করেই, যেমন, master ব্রাঞ্চে কোনটি মার্জ হয়নি?
অন্যান্য ব্রাঞ্চের ক্ষেত্রে মার্জের অবস্থা জানার জন্যে আপনি সর্বদাই একটি অতিরিক্ত আর্গুমেন্ট সরবরাহ করতে পারবেন প্রথম ব্রাঞ্চটি চেক না করেই, যেমন, master ব্রাঞ্চে কোনটি মার্জ হয়নি?
একটি ব্রাঞ্চের নাম পরিবর্তনকরণ
নোট
অন্য সহযোগীদের দ্বারা ব্যবহৃত ব্রাঞ্চের নাম এখনও পরিবর্তন করবেন না। “master ব্রাঞ্চের নাম পরিবর্তন করা” বিভাগটি না পড়ে master/main/mainline এর মতো ব্রাঞ্চের নাম পরিবর্তন করবেন না।
অন্য সহযোগীদের দ্বারা ব্যবহৃত ব্রাঞ্চের নাম এখনও পরিবর্তন করবেন না। “master ব্রাঞ্চের নাম পরিবর্তন করা” বিভাগটি না পড়ে master/main/mainline এর মতো ব্রাঞ্চের নাম পরিবর্তন করবেন না।
ধরুন আপনার একটি bad-branch-name নামে ব্রাঞ্চ আছে এবং আপনি সমস্ত history রেখে এটি সংশোধন করে নামটি corrected-branch-name এ পরিবর্তন করতে চান। এছাড়াও আপনি রিমোট ভাবে ব্রাঞ্চটির নাম পরিবর্তন করতে চান (GitHub, GitLab, অন্যান্য সার্ভার)। আপনি এটা কিভাবে করবেন?
git branch –move কমান্ড দিয়ে লোকালি বা স্থানীয়ভাবে ব্রাঞ্চটির নাম পরিবর্তন করুনঃ
ধরুন আপনার একটি bad-branch-name নামে ব্রাঞ্চ আছে এবং আপনি সমস্ত history রেখে এটি সংশোধন করে নামটি corrected-branch-name এ পরিবর্তন করতে চান। এছাড়াও আপনি রিমোট ভাবে ব্রাঞ্চটির নাম পরিবর্তন করতে চান (GitHub, GitLab, অন্যান্য সার্ভার)। আপনি এটা কিভাবে করবেন?
git branch –move কমান্ড দিয়ে লোকালি বা স্থানীয়ভাবে ব্রাঞ্চটির নাম পরিবর্তন করুনঃ
$ git branch --move bad-branch-name corrected-branch-name
এটি আপনার bad-branch-name সংশোধন করে corrected-branch-name এ প্রতিস্থাপন করে, কিন্তু এই পরিবর্তনটি শুধুমাত্র লোকাল বা স্থানীয়। অন্যদের রিমোটে সংশোধন করা ব্রাঞ্চ দেখতে দেওয়ার জন্য, এটিকে পুশ করুনঃ
$ git push --set-upstream origin corrected-branch-name
এখন আমরা এখন কোথায় আছি তা সংক্ষিপ্তভাবে দেখবঃ
$ git branch --all
* corrected-branch-name
main
remotes/origin/bad-branch-name
remotes/origin/corrected-branch-name
remotes/origin/main
লক্ষ্য করুন যে আপনি ব্রাঞ্চ corrected-branch-name তে আছেন এবং এটি রিমোটে রয়েছে। যাইহোক, খারাপ নামের শাখাটি এখনও সেখানে উপস্থিত রয়েছে তবে আপনি নিম্নলিখিত কমান্ডটি কার্যকর করে এটি মুছতে পারেনঃ
$ git push origin --delete bad-branch-name
এখন খারাপ ব্রাঞ্চ নাম সম্পূর্ণরূপে সংশোধন করা সঠিক ব্রাঞ্চ নাম দিয়ে প্রতিস্থাপিত হয়েছে।
Master ব্রাঞ্চের নাম পরিবর্তনকরণ
সতর্কতা
master/main/mainline/default এর মতো ব্রাঞ্চের নাম পরিবর্তন করলে আপনার রিপোজিটরিতে ব্যবহার করা ইন্টিগ্রেশন, পরিষেবা, হেল্পার ইউটিলিটি এবং বিল্ড/রিলিজ স্ক্রিপ্ট ভেঙে যাবে। আপনি এটি করার আগে, নিশ্চিত করুন যে আপনি আপনার সহযোগীদের সাথে পরামর্শ করেছেন৷ এছাড়াও, নিশ্চিত করুন যে আপনি আপনার রিপজিটরির মাধ্যমে একটি পুঙ্খানুপুঙ্খ অনুসন্ধান করেছেন এবং আপনার কোড এবং স্ক্রিপ্টগুলিতে পুরানো ব্রাঞ্চের নামের কোনও রেফারেন্স আপডেট করেছেন।
নিম্নলিখিত কমান্ড দিয়ে আপনার লোকাল master ব্রাঞ্চের নাম পরিবর্তন করুনঃ
$ git branch --move master main
এখানে আর কোনো লোকাল master ব্রাঞ্চ নেই, কারণ এটির নাম পরিবর্তন করে প্রধান ব্রাঞ্চে রাখা হয়েছে।
অন্যদের নতুন প্রধান ব্রাঞ্চ দেখতে দেওয়ার জন্য, আপনাকে এটিকে রিমোটে পুশ দিতে হবে। এটি রিমোটে নতুন নামকরণ করা ব্রাঞ্চটিকে available বা উপলব্ধ করে তোলে।
অন্যদের নতুন প্রধান ব্রাঞ্চ দেখতে দেওয়ার জন্য, আপনাকে এটিকে রিমোটে পুশ দিতে হবে। এটি রিমোটে নতুন নামকরণ করা ব্রাঞ্চটিকে available বা উপলব্ধ করে তোলে।
$ git push --set-upstream origin main
এখন আমরা নিম্নলিখিত স্টেট দিয়ে শেষ করি:
$ git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
আপনার লোকাল master ব্রাঞ্চটি চলে গেছে, কারণ এটি প্রধান ব্রাঞ্চের সাথে প্রতিস্থাপিত হয়েছে। প্রধান ব্রাঞ্চটি রিমোটে উপস্থিত। যাইহোক, পুরানো master ব্রাঞ্চ এখনও রিমোটে উপস্থিত আছে. আপনি আরও কিছু পরিবর্তন না করা পর্যন্ত অন্যান্য সহযোগীরা তাদের কাজের ভিত্তি হিসাবে master ব্রাঞ্চ ব্যবহার করতে থাকবে।
রূপান্তরটি সম্পূর্ণ করার জন্য এখন আপনার সামনে আরও কয়েকটি কাজ রয়েছেঃ
- যেকোন প্রজেক্ট যা এর উপর নির্ভর করে তাদের কোড এবং/অথবা কনফিগারেশন আপডেট করতে হবে।
- যেকোনো টেস্ট-রানার কনফিগারেশন ফাইল আপডেট করুন।
- বিল্ড এবং রিলিজ স্ক্রিপ্ট সামঞ্জস্যপূর্ণ করুন।
- Repo-র (রিপোজিটরী) ডিফল্ট ব্রাঞ্চ, মার্জ নিয়ম এবং ব্রাঞ্চের নামের সাথে মেলে এমন অন্যান্য জিনিসগুলির জন্য আপনার repo host settings পুনরায় ঠিক করুন।
- পুরানো ব্রাঞ্চকে টার্গেট করে এমন কোনো pull request বন্ধ বা মার্জ করুন।
আপনি এই সমস্ত কাজ সম্পন্ন করার পরে, এবং মূল ব্রাঞ্চটি master ব্রাঞ্চের মতোই কাজ করে তা নিশ্চিত হবার পরে, আপনার master ব্রাঞ্চটি মুছে ফেলতে পারেন:
$ git push origin --delete master