কিভাবে একটি গিট শাখা থেকে একটি কমিট সরান

Git

গিটে প্রতিশ্রুতির ইতিহাস পরিচালনা করা

গিট একটি শক্তিশালী সংস্করণ নিয়ন্ত্রণ ব্যবস্থা যা বিকাশকারীদের পরিবর্তনগুলি ট্র্যাক করতে এবং দক্ষতার সাথে তাদের প্রকল্পের ইতিহাস পরিচালনা করতে দেয়। যাইহোক, এমন সময় আছে যখন আপনাকে একটি শাখা থেকে একটি প্রতিশ্রুতি মুছে ফেলার প্রয়োজন হতে পারে, হয় ভুলগুলি অপসারণ করতে বা প্রকল্পের ইতিহাস পরিষ্কার করতে।

এই নির্দেশিকায়, আমরা আপনার শাখার ইতিহাস থেকে একটি প্রতিশ্রুতি মুছে ফেলার বিভিন্ন পদ্ধতি অন্বেষণ করব। এছাড়াও আমরা আলোচনা করব `গিট রিসেট --হার্ড হেড` ব্যবহার করা সঠিক পন্থা এবং এই কমান্ডের সম্ভাব্য পরিণতিগুলো কি।

আদেশ বর্ণনা
git reset --hard HEAD~1 কার্যকারী ডিরেক্টরি এবং সূচীতে সমস্ত পরিবর্তন বাতিল করে, সাম্প্রতিক কমিটের আগে বর্তমান শাখাটিকে প্রতিশ্রুতিতে পুনরায় সেট করে।
git rebase -i HEAD~N শেষ N প্রতিশ্রুতি পর্যালোচনা এবং সংশোধন করতে একটি ইন্টারেক্টিভ রিবেস সেশন শুরু করে।
drop ইতিহাস থেকে একটি প্রতিশ্রুতি সরাতে ইন্টারেক্টিভ রিবেসে ব্যবহৃত হয়।
edit একটি নির্দিষ্ট প্রতিশ্রুতি পরিবর্তন করতে ইন্টারেক্টিভ রিবেসে ব্যবহৃত হয়।
git commit --amend --no-edit প্রতিশ্রুতি বার্তা পরিবর্তন না করে পূর্ববর্তী প্রতিশ্রুতি সংশোধন করে।
git rebase --continue বিরোধগুলি সমাধান বা পরিবর্তনগুলি সংশোধন করার পরে পুনর্বাসন প্রক্রিয়া চালিয়ে যায়।
git push origin branch-name --force স্থানীয় শাখার সাথে দূরবর্তী শাখাকে ওভাররাইট করে দূরবর্তী সংগ্রহস্থলে ধাক্কা দেয়।

কমিট রিমুভালের জন্য গিট কমান্ড ব্যাখ্যা করা

প্রথম স্ক্রিপ্টে, আমরা ব্যবহার করি শাখা থেকে সাম্প্রতিকতম কমিট মুছে ফেলার কমান্ড। এই কমান্ডটি সাম্প্রতিক শাখার ঠিক আগে বর্তমান শাখাটিকে প্রতিশ্রুতিতে পুনরায় সেট করে, কার্যকরভাবে এটিকে ইতিহাস থেকে সরিয়ে দেয়। কাজের ডিরেক্টরি এবং সূচীতে সমস্ত পরিবর্তন বাতিল করা হয়েছে। এই পদ্ধতিটি কার্যকর যখন আপনাকে শেষ কমিটটি দ্রুত সরিয়ে ফেলতে হবে এবং সেই প্রতিশ্রুতিতে করা কোনো পরিবর্তন রাখতে হবে না। যাইহোক, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এই কমান্ডটি স্থায়ীভাবে পরিবর্তনগুলি মুছে ফেলবে এবং সেগুলি সহজে পুনরুদ্ধার করা যাবে না। আদেশ তারপর স্থানীয় শাখার সাথে দূরবর্তী শাখাকে ওভাররাইট করে দূরবর্তী সংগ্রহস্থলে পরিবর্তনগুলি জোর করতে ব্যবহৃত হয়।

দ্বিতীয় স্ক্রিপ্ট ব্যবহার করে একটি ইন্টারেক্টিভ রিবেস সেশন শুরু করার জন্য কমান্ড। এই সেশনটি আপনাকে শেষ N কমিটগুলি পর্যালোচনা এবং সংশোধন করতে দেয়। এই অধিবেশন চলাকালীন, আপনি ব্যবহার করতে পারেন ইতিহাস থেকে একটি নির্দিষ্ট প্রতিশ্রুতি মুছে ফেলার কমান্ড। বিকল্পভাবে, দ কমান্ড একটি নির্দিষ্ট কমিট পরিবর্তন করতে ব্যবহার করা যেতে পারে। একবার পরিবর্তন করা হয়, git commit --amend --no-edit কমান্ড তার বার্তা পরিবর্তন না করে পূর্ববর্তী কমিট সংশোধন করে। অবশেষে, দ সমস্ত প্রয়োজনীয় পরিবর্তন বা দ্বন্দ্ব সমাধানের পরে কমান্ড রিবেস প্রক্রিয়া চালিয়ে যায়। এই পদ্ধতিটি আরও নমনীয় এবং এটি কমিট ইতিহাসের উপর সুনির্দিষ্ট নিয়ন্ত্রণের অনুমতি দেয়, এটি আরও জটিল পরিস্থিতিগুলির জন্য আদর্শ করে তোলে যেখানে আপনাকে অন্যান্য পরিবর্তনগুলি না হারিয়ে নির্দিষ্ট প্রতিশ্রুতিগুলি সরাতে বা সম্পাদনা করতে হবে।

গিট কমান্ড ব্যবহার করে একটি গিট শাখা থেকে একটি কমিট মুছে ফেলা

গিট কমান্ড লাইন ব্যবহার করা হচ্ছে

# To delete the most recent commit from the branch
git reset --hard HEAD~1

# To delete a specific commit from the branch history
git rebase -i HEAD~N
# Replace N with the number of commits to review
# In the text editor, replace 'pick' with 'drop' for the commit to delete

# To force push the changes to the remote repository
git push origin branch-name --force
# Replace 'branch-name' with your actual branch name

গিট-এ প্রতিশ্রুতির ইতিহাস পুনর্লিখন

গিট ইন্টারেক্টিভ রিবেস ব্যবহার করা

# Start an interactive rebase session to modify the last N commits
git rebase -i HEAD~N
# Replace N with the number of recent commits to modify

# In the text editor that appears, change 'pick' to 'edit' for the commit you want to modify
# Save and close the editor

# Make necessary changes, then amend the commit
git commit --amend --no-edit
git rebase --continue
# Repeat as necessary for additional commits

গিট কমিট ইতিহাস পরিচালনার জন্য ব্যাপক কৌশল

পূর্বে আলোচনা করা পদ্ধতিগুলি ছাড়াও, গিটে কমিট ইতিহাস পরিচালনার জন্য আরেকটি অপরিহার্য কৌশল হল আদেশ এই কমান্ডটি একটি নতুন কমিট তৈরি করতে ব্যবহৃত হয় যা পূর্ববর্তী কমিট দ্বারা প্রবর্তিত পরিবর্তনগুলিকে পূর্বাবস্থায় ফিরিয়ে আনে। অপছন্দ বা , git revert বিদ্যমান প্রতিশ্রুতির ইতিহাস পরিবর্তন করে না, এটি পরিবর্তনগুলি পূর্বাবস্থায় ফেরানোর জন্য একটি নিরাপদ বিকল্প করে তোলে, বিশেষ করে ভাগ করা সংগ্রহস্থলগুলিতে। উদাহরণস্বরূপ, যদি একটি কমিট একটি বাগ প্রবর্তন করে, আপনি ব্যবহার করতে পারেন একটি নতুন প্রতিশ্রুতি তৈরি করতে যা এই পরিবর্তনগুলিকে সরিয়ে দেয়। এটি নিশ্চিত করে যে ইতিহাস রৈখিক এবং অক্ষত থাকে, যা সহযোগিতার জন্য এবং প্রকল্পের ইতিহাসের অখণ্ডতা বজায় রাখার জন্য অত্যন্ত গুরুত্বপূর্ণ।

আরেকটি উন্নত কৌশল ব্যবহার করা হয় কমান্ড, যা আপনাকে আপনার বর্তমান শাখায় নির্দিষ্ট কমিট থেকে পরিবর্তনগুলি প্রয়োগ করতে দেয়। এটি বিশেষভাবে উপযোগী হতে পারে যখন আপনাকে সম্পূর্ণ শাখাকে একত্রিত না করে অন্য শাখা থেকে নির্দিষ্ট বৈশিষ্ট্য বা সংশোধন আনতে হবে। আদেশ আপনার বর্তমান শাখায় নির্দিষ্ট কমিট থেকে পরিবর্তনগুলি প্রয়োগ করবে। এই পদ্ধতিটি একটি পরিষ্কার এবং সংগঠিত প্রতিশ্রুতি ইতিহাস বজায় রাখতে সাহায্য করে, কারণ আপনি বেছে বেছে শুধুমাত্র প্রয়োজনীয় পরিবর্তনগুলি প্রয়োগ করতে পারেন, অন্য শাখা থেকে কোনো অবাঞ্ছিত প্রতিশ্রুতি এড়াতে পারেন।

  1. পার্থক্য কি এবং ?
  2. HEAD পয়েন্টার সরানোর মাধ্যমে কমিট ইতিহাস পরিবর্তন করে, যখন একটি নতুন প্রতিশ্রুতি তৈরি করে যা বিদ্যমান ইতিহাস পরিবর্তন না করে পূর্ববর্তী প্রতিশ্রুতির পরিবর্তনগুলিকে পূর্বাবস্থায় ফিরিয়ে আনে।
  3. আমি কখন ব্যবহার করা উচিত পরিবর্তে ?
  4. অন্য শাখা থেকে পরিবর্তন একত্রিত করে একটি রৈখিক প্রতিশ্রুতি ইতিহাস তৈরি করার জন্য দরকারী, যেখানে শাখার ইতিহাস সংরক্ষণ করে।
  5. কিভাবে আমি একটি ভাগ করা শাখা থেকে একটি কমিট নিরাপদে সরাতে পারি?
  6. ব্যবহার করুন একটি নতুন প্রতিশ্রুতি তৈরি করতে যা অনাকাঙ্ক্ষিত প্রতিশ্রুতি থেকে পরিবর্তনগুলিকে পূর্বাবস্থায় ফিরিয়ে আনে, নিশ্চিত করে যে ইতিহাস অক্ষত থাকে এবং সহযোগিতামূলক কাজ ব্যাহত না হয়।
  7. এর উদ্দেশ্য কি আদেশ?
  8. শাখার টিপ এবং অন্যান্য রেফারেন্সের আপডেট রেকর্ড করতে ব্যবহার করা হয়, যা আপনাকে কমিট পুনরুদ্ধার করতে দেয় যা আর শাখা বা ট্যাগ রেফারেন্সের মাধ্যমে পৌঁছানো যায় না।
  9. আমি কিভাবে গিটে একটি কমিট বার্তা সম্পাদনা করতে পারি?
  10. ব্যবহার করুন সাম্প্রতিক প্রতিশ্রুতি বার্তা পরিবর্তন করতে। পূর্ববর্তী প্রতিশ্রুতির জন্য, ব্যবহার করুন একটি ইন্টারেক্টিভ রিবেস সেশন শুরু করতে।
  11. কি করে বিকল্প করতে ?
  12. দ্য অপশনটি রিমোট রিপোজিটরিতে ধাক্কা দেয়, দূরবর্তী শাখায় স্থানীয় শাখায় উপস্থিত নয় এমন কোনো পরিবর্তন ওভাররাইট করে।
  13. আমি কি পূর্বাবস্থায় ফিরতে পারি ?
  14. হ্যাঁ, আপনি ব্যবহার করতে পারেন পূর্ববর্তী HEAD রেফারেন্স খুঁজে পেতে এবং তারপর ব্যবহার করুন পছন্দসই অবস্থায় ফিরে যেতে।

গিট কমিট অপসারণের কৌশলগুলি মোড়ানো

গিটে প্রতিশ্রুতি পরিচালনা করা জটিল হতে পারে, তবে সঠিক আদেশ এবং কৌশলগুলির সাহায্যে আপনি আপনার প্রকল্পের ইতিহাসকে কার্যকরভাবে নিয়ন্ত্রণ করতে পারেন। আপনার সাথে সর্বশেষ প্রতিশ্রুতিটি দ্রুত মুছতে হবে কিনা , অথবা নির্বাচিতভাবে অপসারণ এবং সম্পাদনা ব্যবহার করে প্রতিশ্রুতি , গিট প্রতিটি দৃশ্যের জন্য শক্তিশালী সরঞ্জাম সরবরাহ করে। সর্বদা নিশ্চিত করুন যে আপনি প্রতিটি কমান্ডের প্রভাব বুঝতে পেরেছেন, বিশেষ করে যখন শেয়ার্ড রিপোজিটরির সাথে কাজ করেন, আপনার প্রকল্পের ইতিহাসের অখণ্ডতা বজায় রাখতে।

যেমন কমান্ড আয়ত্ত করে , , এবং , আপনি আপনার গিট কমিট ইতিহাসের উপর সুনির্দিষ্ট নিয়ন্ত্রণ লাভ করেন। প্রতিটি পদ্ধতি বিভিন্ন উদ্দেশ্যে কাজ করে, সাধারণ পূর্বাবস্থার ক্রিয়াকলাপ থেকে জটিল ইতিহাস পুনর্লিখন পর্যন্ত। আপনার সংগ্রহস্থলকে পরিষ্কার, সংগঠিত এবং নির্ভুল রাখতে, আরও ভাল সহযোগিতা এবং প্রকল্প পরিচালনার সুবিধার্থে এই সরঞ্জামগুলি বুদ্ধিমানের সাথে ব্যবহার করুন।