শুরুতে ডেভেলপাররা Git শিখেন পুনরাবৃত্তির মাধ্যমে। আমরা দ্রুত শিখি git pull, git push এবং git commit প্রতিটির অর্থ। বড় প্রজেক্টে কাজ করা এবং টিমের সাথে সহযোগিতা করার সাথে সাথে, আমরা আরও অ্যাডভান্সড Git কমান্ড শিখি যা একটি প্রজেক্টে কাজ করা ব্যক্তিদের মধ্যে কোডবেসের ভার্সন কন্ট্রোল ইতিহাস সঠিক রাখতে সাহায্য করে।
একটি τέτοι কমান্ড হলো git cherry-pick। git cherry-pick কমান্ডটি তখন ব্যবহার করা হয় যখন আমরা একটি ব্রাঞ্চ থেকে নির্দিষ্ট কমিটগুলো নিয়ে অন্য ফিচার ব্রাঞ্চ বা master ব্রাঞ্চের HEAD-এ অ্যাটাচ করতে চাই।
git cherry-pick কী?
Cherry-picking কে একটি গ্রুপ প্রজেক্টের মতো ভাবুন। প্রতিটি ব্যক্তির একটি নির্দিষ্ট সেকশন থাকে যেখানে সে কাজ করবে। শেষে, সেগুলো একটি মোট প্রজেক্টে কম্বাইন করা হবে। আপনি একটি সেকশনের কিছু অংশ নিয়ে অন্য সেকশনের একটি অংশে স্প্লিস করতে পারেন যাতে প্রজেক্টটি ভালোভাবে ফ্লো করে।
ইহাই মূলত git cherry-pick: আমরা একটি ফিচার ব্রাঞ্চ থেকে একটি কমিট বা একাধিক কমিট নিয়ে অন্য ব্রাঞ্চে একটি নতুন কমিট হিসেবে অ্যাটাচ করি। চলুন দেখি এটি কীভাবে কাজ করে:
এই বেসিক ডায়াগ্রামটি একটি Git-দ্বারা ট্র্যাক করা প্রজেক্টের দুটি ব্রাঞ্চকে রিপ্রেজেন্ট করে। অক্ষরগুলো Git রিপোজিটরিতে তাদের সংশ্লিষ্ট ব্রাঞ্চগুলিতে করা বিভিন্ন কমিটকে রিপ্রেজেন্ট করে। ড্যাশগুলো ইতিহাসকে রিপ্রেজেন্ট করে, পুরনো থেকে নতুন। দুটি ব্রাঞ্চের কাঠামো এবং সেগুলো কীভাবে কাজ করে সেটি কল্পনা করার চেষ্টা করুন ধাপগুলো ফলো করার সময়:
git cherry-pick সম্পূর্ণ করার ধাপসমূহ
উপরোক্ত চিত্রে প্রতিটি Git কমিট বা অক্ষর (যেমন চিত্রে দেখানো) কে একটি চেরি হিসেবে ভাবুন। প্রতিটি চেরির একটি ইউনিক হ্যাশ থাকে সাথে যুক্ত - আপনি যদি নিশ্চিত নন হ্যাশ কী, তবে সেটিকে একটি ফিঙ্গারপ্রিন্ট বা ইউনিক আইডেন্টিফায়ার হিসেবে ভাবুন যা কমিটের সাথে যুক্ত। আমাদের সেই হ্যাশের প্রয়োজন হবে সেই চেরি পিক করে অন্য ব্রাঞ্চে যোগ করার জন্য।
- git checkout <নাম অফ ব্রাঞ্চ ইউ উড লাইক টু গ্র্যাব কমিট फ्रোম>
সেই ব্রাঞ্চে চেকআউট করুন যেখান থেকে আপনি আপনার কমিট/চেরি পিক করতে চান। - git reflog
Git রেফারেন্স লগ,reflog, সাম্প্রতিক অ্যাকশনগুলো ট্র্যাক রাখে। এখানে একটি git reflog উদাহরণ:% git reflog
bf654bb (HEAD -> master, origin/master) HEAD@{0}: commit: last commit message made
2394353 HEAD@{1}: commit: where head was 2 commit messages ago
b4b51eb HEAD@{2}: commit: where head was 3 commit messages ago
আপনার কমিট রেফারেন্স লগ, যদি বড় টিমের সাথে কাজ করেন, তবে আরও ইনফরমেশন থাকতে পারে, যেমন তারিখ, সময় এবং/অথবা কমিট করা অথর। এখানে, তবে, আমরা কমিট হ্যাশ, কমিট করা ব্রাঞ্চ, করা অ্যাকশন এবং প্রকৃত কমিট মেসেজ দেখছি।
একবার আপনি জানলেন কোন কমিটটি আপনি অন্য ব্রাঞ্চে যোগ করতে চান, হ্যাশটি নোট করুন - হ্যাশটি হলো প্রতিটি লাইনের শুরুতে থাকা সংখ্যা এবং ক্যারেক্টার স্ট্রিং। - git checkout <নাম অফ ব্রাঞ্চ ইউ উড লাইক টু অ্যাড কমিট টু>
হ্যাশটি নোট করার পর, সেটি ব্রাঞ্চে স্যুইচ করুন যেখান আপনি কমিটটি যোগ করতে চান। - git cherry-pick [-x] <commit hash>
git cherry-pick কমান্ডটি কমিট হ্যাশের সাথে ব্যবহার করুন সেই ব্রাঞ্চের ওয়ার্কিং ট্রিতে কমিটটি যোগ করতে। -x ফ্ল্যাগ ব্যবহার করুন যখন আপনি একটি পাবলিক ব্রাঞ্চ থেকে cherry-pick করছেন কারণ এটি একটি লাইন অ্যাপেন্ড করবে যা মূল কমিটকে রিমার্ক করবে जिससे এটি cherry-pick করা হয়েছে।
আমাদের ডায়াগ্রামটি cherry-pick করার পর আরেকবার দেখি:
আমাদের ডায়াগ্রামটি cherry-pick করার পর আরেকবার দেখি:
এই উদাহরণে আমাদের "চেরি", বা কমিট হ্যাশ, যেটি আমরা বেছে নিয়েছি সেটি হলো "C"। উপরে আউটলাইন করা ধাপগুলো ফলো করার পর, সিলেক্ট করা কমিট, এই উদাহরণে "C", দ্বিতীয় ব্রাঞ্চের ইতিহাসে একটি কমিট হিসেবে যোগ হয়।
শেষ নোট
শেষ কাজ হলো cherry-pick করা কমিট থেকে নোটগুলো কপি করা। git notes copy <cherry-picked commit hash> <new-commit-hash> ব্যবহার করে মূল কমিটে করা যেকোনো নোট কপি করুন।
এছাড়া, ফলস্বরূপ আপনার যে যেকোনো মার্জ কনফ্লিক্ট আসতে পারে সেগুলো রেজলভ করা নিশ্চিত করুন।
এই আর্টিকেলে, আমরা একটি অ্যাডভান্সড Git কমান্ড নামত git cherry-pick ব্যবহার করার প্রক্রিয়াটি দেখেছি। এটি ব্যবহার করুন যখন আপনাকে একটি ব্রাঞ্চ থেকে একটি কমিট নিয়ে অন্য ব্রাঞ্চে যোগ করতে হয়।