শেষ গিট কমিট রোলব্যাক


120

আমি সবেমাত্র একটি করেছি

git commit -m "blah"

তারপরে আমি কিছু ফাইল যুক্ত করেছি, আমি কীভাবে আমার বর্তমান ফাইলগুলিতে এখনও যুক্ত / প্রতিশ্রুতিবদ্ধ না থাকা রোলব্যাক করব এবং সরিয়ে ফেলব?


15
না, এটি ওপি যা বলছে তা নয় - এটি স্পষ্ট যে তিনি শেষ প্রতিশ্রুতিতে রোলব্যাক করতে চান, শেষ প্রতিশ্রুতি পূর্বাবস্থায় ফিরবেন না। তিনি কিছু বলেননি যে তিনি কিছু ফাইল যুক্ত করেছেন এবং সেগুলি দিয়েছিলেন ited তাই পরিষ্কারভাবে তিনি শেষ প্রতিশ্রুতি চান।
পল

1
এই অতি সাধারণ প্রশ্নের উত্তর খুঁজে পাওয়া খুব কঠিন
স্যাম

উত্তর:


211

ক্যাভেট এমপোটর - সামনে ধ্বংসাত্মক কমান্ড।

প্রশমন - git reflog আপনার প্রয়োজন হলে আপনাকে বাঁচাতে পারে।


1) পূর্বাবস্থা স্থানীয় ফাইল পরিবর্তন এবং রাখুন আপনার শেষ কমিট

git reset --hard

2) পূর্বাবস্থা স্থানীয় ফাইল পরিবর্তন এবং REMOVE আপনার শেষ কমিট

git reset --hard HEAD^

3) রাখুন স্থানীয় ফাইল পরিবর্তন এবং REMOVE আপনার শেষ কমিট

git reset --soft HEAD^

20
এই আদেশটি আপনার পূর্ববর্তী প্রতিশ্রুতি মুছে ফেলবে, তাই সাবধানতার সাথে ব্যবহার করুন! গিট রিসেট
--হাড়

9
ডাব্লুটিএফ 36 টি ভোট দিয়ে সঠিক উত্তর হিসাবে এটি করছে। আমি এই মাত্র একটি দিনের কাজ হারিয়েছি ... কারণ আমি মন্তব্যটি পড়ে উত্তরটি পড়েছি। এটি প্রশ্নের সঠিক উত্তর নয়!
ক্রিস নেভিল

1
ঠিক আছে সব হারিয়ে যায় না! আপনি গিট রিফ্লোগ করতে পারেন এটি আপনাকে রিসেটের আগে করা কমিটগুলি দেখার অনুমতি দেবে। তারপরে আপনি সেই কমিটগুলি চেকআউট করতে পারবেন
ক্রিস নেভিল

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

2
গিট হ'ল অ্যালান কেসের বিবৃতিটির বিরোধিতা সহজ জিনিসগুলি সহজ হওয়া উচিত, জটিল জিনিসগুলি সম্ভব হওয়া উচিত। ... বিশেষত এর প্রথম অংশ তবুও, আপনার উত্তরের জন্য আপনাকে ধন্যবাদ। এটা সাহায্য করেছিল.
0xC0000022L

46

আপনি যদি নতুন যুক্ত হওয়া সামগ্রী এবং ইতিমধ্যে মঞ্চস্থ হওয়া ফাইলগুলি মুছে ফেলতে চান (তাই সূচীতে যোগ করা) তবে আপনি ব্যবহার করুন:

git reset --hard

আপনি যদি আপনার সর্বশেষ প্রতিশ্রুতিটিও মুছে ফেলতে চান ("ব্লাহ" বার্তাটি দিয়ে থাকে) তবে ব্যবহার করা ভাল:

git reset --hard HEAD^

অচিহ্নযুক্ত ফাইলগুলি সরানোর জন্য (তাই নতুন ফাইলগুলি এখনও সূচীতে যুক্ত হয়নি) এবং ফোল্ডারগুলি ব্যবহার করে:

git clean --force -d

গিটটি পুনরায় সেট করা - হেড হেড my আমার সর্বশেষ প্রতিশ্রুতি স্থায়ীভাবে সরিয়ে দেয়? আমি কি আর ফিরে যেতে পারি না?
ব্যবহারকারী 137717

দেখে মনে হচ্ছে "গিট ক্লিন
আলেক্সি টিমোখিন

15

git reset --hard ওয়ার্কিং ডিরেক্টরিটিকে শেষ প্রতিশ্রুতিতে ফিরিয়ে আনবে এবং নতুন / পরিবর্তিত ফাইল মুছে ফেলবে।


2
এটি করেছিলেন, তবে ফাইলগুলি এখনও আছে। (চিহ্নবিহীন ফাইলগুলি এখনও রয়েছে)
ব্ল্যাঙ্কম্যান

এই ক্ষেত্রে আপনি "গিট স্ট্যাশ" করতে পারেন
জ্যাকট্রেড

3
আপভোটেড কারণ এটিই ওপি'র স্পষ্ট এবং দ্ব্যর্থহীন প্রশ্নের একমাত্র স্পষ্ট এবং দ্ব্যর্থহীন উত্তর।
পল

4

আপনি git revert HEAD^পরের থেকে শেষের প্রতিশ্রুতিতে ফিরে যাওয়ার জন্য ব্যবহার করে প্রতিশ্রুতি প্রত্যাহার করতে পারেন। আপনি হেড instead এর পরিবর্তে আইডিটি ব্যবহার করে প্রত্যাবর্তনের প্রতিশ্রুতি নির্দিষ্ট করতে পারেন ^


আপনি যে অর্থে বলছেন এটি "প্রত্যাবর্তন" করবে না। এটি একটি বিপরীত প্রতিশ্রুতি তৈরি করে।
স্টিফান কেন্ডাল

4

আপনি যদি সর্বশেষ প্রতিশ্রুতিটি সাম্প্রতিক করতে চান তবে এটি ব্যবহার করুন:

git reset HEAD~

আমার জন্য কবজ মত কাজ।


2
এটিই প্রশ্নের সঠিক উত্তর
ডেনিজ কোকোবোয়া

এটি অনুমোদিত উত্তর হওয়া উচিত
amiabl

3

শেষ প্রতিশ্রুতিবদ্ধ হওয়ার পরে স্থানীয় ফাইলগুলি আনডো করার একটি সহজ বোকা উপায় হ'ল এগুলি একটি নতুন শাখায় স্থাপন করা:

git branch changes
git checkout changes
git add .
git commit

এটি নতুন শাখায় পরিবর্তনগুলি ছেড়ে দেয়। এটি শেষ শাখায় ফিরে পেতে মূল শাখায় ফিরে যান:

git checkout master

মূল শাখা গোলযোগের ঝুঁকি ছাড়াই পরিবর্তনগুলি ফিরিয়ে আনতে বিভিন্ন উপায় অনুশীলনের জন্য নতুন শাখা একটি ভাল জায়গা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.