Rebasing
রিবেসিং আপনাকে কমিট ইতিহাস পরিবর্তন করে এক শাখা থেকে অন্য শাখায় পরিবর্তনগুলিকে অন্তর্ভুক্ত করতে দেয়। এটি উৎস শাখা থেকে লক্ষ্য শাখায় প্রতিশ্রুতি পুনরায় প্লে করে। এটি একটি পরিষ্কার এবং আরও রৈখিক প্রতিশ্রুতির ইতিহাসে পরিণত হয়।
উদাহরণ: ধরা যাক আপনার কাছে একটি বৈশিষ্ট্য শাখা আছে এবং আপনি শাখা feature-branch
থেকে সাম্প্রতিক পরিবর্তনগুলিকে অন্তর্ভুক্ত করতে চান ৷ main
আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
git checkout feature-branch
git rebase main
main
এটি শাখা থেকে প্রতিশ্রুতি প্রয়োগ করবে feature-branch
। রিবেস প্রক্রিয়া চলাকালীন যেকোনো দ্বন্দ্ব সমাধান করা প্রয়োজন।
Stashing
স্ট্যাশিং আপনাকে আপনার বর্তমান পরিবর্তনগুলি সংরক্ষণ করতে দেয়, যা প্রতিশ্রুতিবদ্ধ হওয়ার জন্য প্রস্তুত নয় এবং অস্থায়ীভাবে একটি পরিষ্কার কার্যকারী ডিরেক্টরিতে ফিরে যেতে দেয়। আপনি বর্তমানে কাজ করছেন এমন পরিবর্তনগুলি না করেই যখন আপনাকে একটি ভিন্ন শাখায় স্যুইচ করতে বা একটি ভিন্ন বৈশিষ্ট্যে কাজ করতে হবে তখন এটি কার্যকর।
উদাহরণ: ধরা যাক আপনি একটি বৈশিষ্ট্য শাখায় কাজ করছেন এবং আপনি কিছু পরিবর্তন করেছেন, কিন্তু আপনাকে অন্য শাখায় যেতে হবে। আপনার পরিবর্তনগুলি লুকিয়ে রাখতে আপনি নিম্নলিখিত কমান্ডগুলি ব্যবহার করতে পারেন:
git stash
নতুন শাখায় স্যুইচ করার পরে, আপনি ব্যবহার করে লুকিয়ে রাখা পরিবর্তনগুলি প্রয়োগ করতে পারেন:
git stash apply
Git Hooks
Git Hooks
এমন স্ক্রিপ্ট যা নির্দিষ্ট গিট ইভেন্ট দ্বারা ট্রিগার হয়, যেমন প্রি-কমিট, পোস্ট-কমিট, প্রি-পুশ ইত্যাদি। এগুলি আপনাকে নির্দিষ্ট ক্রিয়াগুলি স্বয়ংক্রিয় করতে বা আপনার কর্মপ্রবাহে নির্দিষ্ট নিয়ম প্রয়োগ করতে দেয়।
উদাহরণ: ধরুন আপনি কমিট করার আগে আপনার কোডে একটি লিন্টার চালাতে চান। আপনি একটি প্রি-কমিট হুক স্ক্রিপ্ট তৈরি করতে পারেন যা লিন্টারকে ট্রিগার করে এবং কোনো লিন্টিং ত্রুটি থাকলে কমিট প্রতিরোধ করে।
Git Submodule
Git Submodule
আপনাকে আপনার প্রধান সংগ্রহস্থলের মধ্যে একটি সাবডিরেক্টরি হিসাবে অন্য একটি গিট সংগ্রহস্থল অন্তর্ভুক্ত করার অনুমতি দেয়। এটি দরকারী যখন আপনার কাছে একটি প্রকল্প থাকে যা বহিরাগত লাইব্রেরি বা উপাদানগুলির উপর নির্ভর করে।
উদাহরণ: আপনার একটি প্রকল্প আছে যার জন্য একটি নির্দিষ্ট লাইব্রেরি প্রয়োজন। আপনার সংগ্রহস্থলে লাইব্রেরির কোড নকল করার পরিবর্তে, আপনি এটি একটি সাবমডিউল হিসাবে যোগ করতে পারেন। এইভাবে, আপনি লাইব্রেরি কোড আলাদা রাখতে পারেন এবং প্রয়োজনে এটি সহজেই আপডেট করতে পারেন।
Git Revert and Git Reset
Git Revert
একটি নতুন প্রতিশ্রুতি তৈরি করে পূর্ববর্তী একটি প্রতিশ্রুতিকে পূর্বাবস্থায় ফিরিয়ে আনে যা মূল প্রতিশ্রুতিতে করা পরিবর্তনগুলিকে পূর্বাবস্থায় ফিরিয়ে আনে। Git Reset
, অন্যদিকে, কমিট ইতিহাস থেকে কার্যকরভাবে কমিট বাতিল করে, আপনাকে শাখা পয়েন্টারটিকে একটি ভিন্ন প্রতিশ্রুতিতে স্থানান্তর করতে দেয়।
উদাহরণ: আপনি যদি শেষ প্রতিশ্রুতিটিকে পূর্বাবস্থায় ফিরিয়ে আনতে চান তবে আপনি git revert HEAD
একটি নতুন প্রতিশ্রুতি তৈরি করতে ব্যবহার করতে পারেন যা শেষ প্রতিশ্রুতিতে করা পরিবর্তনগুলিকে পূর্বাবস্থায় ফিরিয়ে আনে। আপনি যদি শেষ প্রতিশ্রুতিটি সম্পূর্ণরূপে বাতিল করতে চান তবে আপনি git reset HEAD~1
একটি কমিট দ্বারা শাখা পয়েন্টারটিকে ফিরিয়ে নিতে ব্যবহার করতে পারেন।
Git-এ এই উন্নত ধারণাগুলি আপনার সংগ্রহস্থলকে কার্যকরভাবে পরিচালনা করার জন্য শক্তিশালী ক্ষমতা প্রদান করে। এগুলি কীভাবে ব্যবহার করবেন এবং কখন প্রয়োগ করবেন তা বোঝা আপনার গিট ওয়ার্কফ্লো এবং প্রকল্প পরিচালনাকে ব্যাপকভাবে উন্নত করবে।