উত্তর:
আপডেট (কয়েক বছর পরে)
এটি কেবল সূচি থেকে অপসারণ করা তুচ্ছ।
সত্য: আপনি সামান্য পরিমাণে সহজেই তার ফাইলের সূচিপত্রটিতে পুনরায় সেট করতে পারেন, যেমন সাম্প্রতিক উত্তর ( ম্যাট কনলির লিখিত ) পরামর্শ দেয়:
git reset HEAD^ path/to/file/to/revert
HEAD^
শেষের আগে পূর্বের প্রতিশ্রুতিতে ফাইলটিকে তার সামগ্রীতে অ্যাক্সেস করার অনুমতি দেয় ।
তারপরে আপনি করতে পারেন git commit --amend
, যেমন আমি মূলত নীচে লিখেছি।
গিট 2.23 (আগস্ট 2019) এর মাধ্যমে, আপনি নতুন কমান্ডটি ব্যবহার করতে পারেনgit restore
git restore --source=HEAD^ --staged -- path/to/file/to/revert
খাটো:
git restore -s@^ -S -- path/to/file/to/revert
আবার, আপনি তখন করতে পারেন git commit --amend
, যেমনটি আমি মূলত নীচে লিখেছি।
আসল উত্তর (জানুয়ারী ২০১১)
যদি এটি আপনার শেষ প্রতিশ্রুতি হয় (এবং আপনি এটি কোথাও ঠেকেননি), আপনি এটি সংশোধন করতে পারেন :
(প্রথম স্ট্যাশ বা সংরক্ষণ করুন b
)
git commit --amend
তারপরে বি মুছে ফেলুন, পুনরায় কমিট করুন। পুনরুদ্ধার খ এবং আপনি সম্পন্ন করেছেন।
--amend
বর্তমান শাখার ডগা সংশোধন করতে ব্যবহৃত হয়।
আপনি যথাযথ প্রতিশ্রুতি যথারীতি প্রতিস্থাপন করতে চান এমন ট্রি অবজেক্টটি প্রস্তুত করুন (এটিতে সাধারণত -i / -o এবং স্পষ্ট পাথ অন্তর্ভুক্ত) এবং কমিট লগ সম্পাদক বর্তমান শাখার ডগা থেকে প্রতিশ্রুতি বার্তা সহ সিড করা হয়েছে।
আপনি যে প্রতিশ্রুতি তৈরি করেছেন তা বর্তমান টিপকে প্রতিস্থাপন করে - এটি যদি একীভূত হত তবে এটির বর্তমান টিপটির পিতা-মাতা হিসাবে থাকবে - সুতরাং বর্তমান শীর্ষ প্রতিশ্রুতি বাতিল করা হয়েছে।
git diff --name-only HEAD^
- (alচ্ছিক) সর্বশেষ কমিটে পরিবর্তিত ফাইলগুলির তালিকা করতে ব্যবহার করুন।git reset HEAD^ path/to/file/to/revert
- কাজের অনুলিপিটি ছোঁয়া রেখে, সেই শেষ সংস্করণে সূচকটি পুনরায় সেট করতে ।git commit --amend
- সূচক পরিবর্তনগুলি অন্তর্ভুক্ত করার জন্য সর্বশেষ প্রতিশ্রুতি সংশোধন করাgit commit -a --amend
3 য় ধাপের জন্য আপনার (যেমন ফাইলগুলি যুক্ত করবেন না) ব্যবহার করা উচিত নয় , বা আপনি যে সম্পাদনাগুলি মুছে ফেলার চেষ্টা করছেন সেগুলি আপনার কাজের অনুলিপি পরিবর্তনগুলি সম্পাদন করবেন। git checkout path/to/file/to/revert
আপনার কার্যকরী অনুলিপিটি পরিষ্কার করার জন্য একটি .চ্ছিক পদক্ষেপ 2.5 হতে পারে ।
git rm --cached path/to/file/to/revert
গাছ থেকে মুছে ফেলা ব্যতীত আন-অ্যাড করার জন্য।
বিকল্প হিসাবে আপনি যদি ব্যবহার করছেন git gui
, আপনি কেবল "সংশোধিত শেষ প্রতিশ্রুতি" বিকল্পটি নির্বাচন করুন, যুক্ত ফাইলটি "স্টেজড" তালিকায় উপস্থিত হবে, এটি "আনস্টেজড" তালিকায় সরানোর জন্য আইকনে ক্লিক করুন এবং প্রতিশ্রুতিবদ্ধ করুন।
আপনি যদি আপনার শেষ প্রতিশ্রুতি থেকে বি মুছতে চান
git rm --cached b (will preserve the file in the working tree but remove it from the index)
git commit --amend
আপনি যদি আপনার শেষ প্রতিশ্রুতিতে সমস্ত পরিবর্তন খ সরিয়ে নিতে চান
(backup b)
(modify b to state before incorrect commit)
git commit --amend
(restore b)
git rm --cached
এবং ব্যাকআপ / পুনরুদ্ধার নাচের সাথে দূরে থাকুন (-1)।
একটি বিকল্প যার জন্য সূচক হ্যাকারি প্রয়োজন হয় না, তবে তা সত্ত্বেও পুরানো প্রতিশ্রুতি বার্তাটি সংরক্ষণ করে:
$ git reset HEAD^
$ git add <all the files you want, excluding the one you don't want>
$ git commit -C HEAD@{1}
আমি এটি পছন্দ করি কারণ (ক) এটি নিয়মিত আমি যে আদেশগুলি ব্যবহার করি তা ব্যবহার করে এবং (খ) আমি git add -p
যেটি প্রতিশ্রুতিবদ্ধ হতে চাই তা সঠিকভাবে নির্ধারণ করতে আমি কী করতে পারি ।
... Then stash/delete b, re-commit..
, এখানে শব্দটিThen
হওয়া উচিত নয়after
? ---amend
স্টাচ / বি মোছার পরে, ...