সম্পর্কে একটি ভুল ধারণা সহ এখানে বেশ কয়েকটি উত্তর রয়েছে git reset --soft
। যদিও সেখানে একটি নির্দিষ্ট শর্ত রয়েছে যা git reset --soft
কেবলমাত্র পরিবর্তিত হবে HEAD
(একটি বিচ্ছিন্ন প্রধানের রাষ্ট্র থেকে শুরু করে), সাধারণত (এবং উদ্দেশ্যযুক্ত ব্যবহারের জন্য), এটি বর্তমানে আপনি যে শাখার রেফারেন্সটি পরীক্ষা করেছেন তা সরিয়ে দেয়। অবশ্যই যদি আপনার কোনও শাখা পরীক্ষা করে না নেওয়া হয় তবে এটি এটি করতে পারে না (সুতরাং নির্দিষ্ট শর্ত যেখানে git reset --soft
কেবল পরিবর্তন হবে HEAD
)।
আমি এটি সম্পর্কে চিন্তা করার সেরা উপায় হিসাবে খুঁজে পেয়েছি git reset
। আপনি কেবল নড়াচড়া করছেন না HEAD
( সব কিছু এটি করে ), আপনি শাখা রেফও সরিয়ে নিচ্ছেন , যেমন master
,। এটি যখন ঘটে তখন আপনি যা করতে চান তার সাথে মিল রয়েছে git commit
(বর্তমান শাখাটি বরাবর সরে যায় HEAD
), নতুন প্রতিশ্রুতি তৈরি (এবং এতে সরানো) বাদ দিয়ে আপনি পূর্বের প্রতিশ্রুতিতে যান।
এটি হ'ল বিন্দুটি reset
, একটি নতুন শাখা পরিবর্তনের পরিবর্তে কোনও নতুন অঙ্গীকার ব্যতীত কোনও শাখা পরিবর্তন করা HEAD
। আপনি এটি দলিলের উদাহরণে দেখতে পারেন:
একটি অঙ্গীকারকে পূর্বাবস্থায় ফিরিয়ে আনুন, এটিকে একটি বিষয় শাখা করে
$ git branch topic/wip (1)
$ git reset --hard HEAD~3 (2)
$ git checkout topic/wip (3)
- আপনি কিছু কমিট করেছেন, তবে বুঝতে পারেন যে তারা "মাস্টার" শাখায় থাকার অকাল ছিল। আপনি তাদের কোনও টপিক শাখায় পোলিশ করা চালিয়ে যেতে চান, সুতরাং বর্তমান হেডের বাইরে "টপিক / উইপ" শাখা তৈরি করুন।
- এই তিনটি কমিট থেকে মুক্তি পেতে মাস্টার শাখাটি রিওয়াইন্ড করুন।
- "বিষয় / wip" শাখায় স্যুইচ করুন এবং কাজ চালিয়ে যান।
এই সিরিজের কমান্ডগুলির বিন্দুটি কী? আপনি এখানে একটি শাখা স্থানান্তরিত করতে চান master
, তাই আপনি master
চেক আউট করার সময়, আপনি চালিত হন git reset
।
এখানে শীর্ষে ভোট দেওয়া উত্তর সাধারণত ভাল তবে আমি ভেবেছিলাম যে আমি ভুল যুক্তি দিয়ে বিভিন্ন উত্তর সংশোধন করতে এটি যুক্ত করব।
আপনার শাখা পরিবর্তন করুন
git reset --soft <ref>
: সুনির্দিষ্ট রেফারেন্সে কমিট করার জন্য বর্তমানে পরীক্ষিত শাখার জন্য শাখা পয়েন্টার পুনরায় সেট করে <ref>
। আপনার কার্যকারী ডিরেক্টরি এবং সূচীর ফাইলগুলি পরিবর্তন করা হয়নি। এই পর্যায়ে থেকে প্রতিশ্রুতিবদ্ধ হওয়া আপনাকে git reset
আদেশের ঠিক আগে যেখানে নিয়ে এসেছিল সেখানে নিয়ে যাবে ।
আপনার সূচকটিও পরিবর্তন করুন
git reset --mixed <ref>
বা সমতুল্য
git reset <ref>
:
এবং যা --soft
করে তা নির্দিষ্ট রেফারেন্সে কমিটের সাথে ম্যাচের জন্য সূচকটি পুনরায় সেট করে। যখন কিছুই হয় না (কারণ এটি চেক আউট শাখাকে চেক আউট শাখায় সরিয়ে দেয়) , বা সমতুল্য , একটি সাধারণ এবং দরকারী কমান্ড কারণ এটি সূচকটি আপনার শেষ প্রতিশ্রুতিবদ্ধ অবস্থার সাথে পুনরায় সেট করে।git reset --soft HEAD
git reset --mixed HEAD
git reset HEAD
আপনার কাজের ডিরেক্টরিটিও পরিবর্তন করুন
git reset --hard <ref>
: যা --mixed
করে এবং আপনার কার্যকারী ডিরেক্টরিকেও ওভাররাইট করে। এই কমান্ডটি অনুরূপ git checkout <ref>
, ব্যতীত (এবং এটি সম্পর্কে গুরুত্বপূর্ণ পয়েন্ট reset
) শাখা রেফটি নির্দেশ করছে যে সমস্ত ধরণের git reset
পদক্ষেপ HEAD
।
"এই জাতীয় এবং এই জাতীয় কমান্ড শিরোনাম" সম্পর্কে একটি নোট:
কমান্ডটি মুভ করে তা বলা কার্যকর নয় HEAD
। আপনার প্রতিশ্রুতিবদ্ধ ইতিহাসে আপনি যেখানে আছেন এমন কোনও কমান্ড পরিবর্তন করে HEAD
। যে কি HEAD
হয় , আপনি যেখানেই থাকুন না করার জন্য একটি পয়েন্টার। HEAD
আপনি কি , এবং আপনি যখনই করেন তেমন সরানো হবে।