সতর্কতা: আপনি অনির্দিষ্ট কাজটি হারাতে না চাইলে নিম্নলিখিত কমান্ডটি ব্যবহার করবেন না!
ব্যবহারের git reset
ব্যাখ্যা দেওয়া হয়েছে, তবে আপনি পাইপযুক্ত কমান্ডগুলির ব্যাখ্যাও চেয়েছিলেন, তাই এখানে যায়:
git ls-files -z | xargs -0 rm -f
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached
কমান্ডটি git ls-files
সমস্ত ফাইলকে তালিকাবদ্ধ করে যা গিট সম্পর্কে জানে। বিকল্পটি -z
তাদের উপর একটি নির্দিষ্ট ফর্ম্যাট চাপিয়ে দেয়, প্রত্যাশিত ফর্ম্যাটটি xargs -0
যা তারপরে অনুরোধ rm -f
করে, যার অর্থ আপনার অনুমোদনের জন্য পরীক্ষা না করে এগুলি সরিয়ে দেওয়া।
অন্য কথায়, "আপনার স্থানীয় অনুলিপি সম্পর্কে সমস্ত ফাইলের গিট জেনে তালিকাবদ্ধ করে তা মুছে ফেলুন"।
তারপরে আমরা যাব git diff
, যা গিট সম্পর্কে জেনে থাকা আইটেমগুলির বিভিন্ন সংস্করণের মধ্যে পরিবর্তন দেখায়। এগুলি বিভিন্ন গাছের মধ্যে পরিবর্তন হতে পারে, স্থানীয় অনুলিপি এবং দূরবর্তী অনুলিপিগুলির মধ্যে পার্থক্য ইত্যাদি।
এখানে ব্যবহৃত হিসাবে, এটি অপ্রচলিত পরিবর্তনগুলি দেখায়; ফাইলগুলি আপনি পরিবর্তন করেছেন তবে প্রতিশ্রুতিবদ্ধ হন নি। বিকল্পটির --name-only
অর্থ আপনি কেবলমাত্র (পূর্ণ) ফাইলের নাম চান এবং এর --diff-filter=D
অর্থ আপনি কেবল মুছে ফেলা ফাইলগুলিতে আগ্রহী। (আরে, আমরা কি কেবল একগুচ্ছ জিনিস মুছতে পারি নি?)
এরপরে xargs -0
আমরা এর আগে যেটা দেখেছি তাতে পাইপ দেওয়া হয় , যা git rm --cached
তাদের ডাকে , মানে তারা ক্যাশে থেকে সরে যায়, যখন কাজের গাছটি একা ছেড়ে যায় should আপনি সবেমাত্র আপনার কার্যকারী গাছ থেকে সমস্ত ফাইল সরিয়ে দিয়েছেন। এখন সেগুলি আপনার সূচি থেকেও সরানো হয়েছে।
অন্য কথায়, স্টেজড বা স্টেস্টেড না হওয়া সমস্ত পরিবর্তন চলে গেছে এবং আপনার কার্যকারী গাছটি খালি। কান্নাকাটি করুন, আপনার ফাইলগুলি উত্স বা দূর থেকে সতেজ হয়ে দেখুন এবং আপনার কাজটি আবার করুন। এই নরকীয় রেখাগুলি লিখেছেন সেই সাধুকে অভিশাপ দিন; যে কেউ কেন এটি করতে চায় তা সম্পর্কে আমার কোনও ক্লু নেই।
টিএল; ডিআর: আপনি সব কিছুকে হজ করেছেন; আবার শুরু করুন এবং git reset
এখন থেকে ব্যবহার করুন।
rm -f
গিট কমান্ড নয় এবং এর কোনও--cached
বিকল্প নেই। আপনার স্থানীয় ফাইলগুলি কার্যকরgit rm
করার আগে মুছে ফেলা হয়েছিল তাই আমি মনে করি না যে আপনিgit rm
কোনও কিছুর জন্য বৈধভাবে দোষ দিতে পারেন ।