গিট রেপো থেকে ফাইল সাফ করা ব্যর্থ হয়েছে, নতুন ব্যাকআপ তৈরি করতে অক্ষম


116

আমি চালিয়ে আমার দূরবর্তী রেপো থেকে একটি ফাইল সরানোর চেষ্টা করেছি:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

তবে গিট অভিযোগ করেন

নতুন ব্যাকআপ তৈরি করা যায় না। পূর্ববর্তী ব্যাকআপটি ইতিমধ্যে রেফ / মূল /
ফোর্সে বিদ্যমান রয়েছে -f
আরএম এর সাহায্যে ব্যাকআপটি ওভাররাইট করে : /.git-rewrite/backup-refs সরানো যায় না: অনুমতি প্রত্যাখ্যানিত
আরএম: ডিরেক্টরিটি সরানো যায় না /.git-rewrite: ডিরেক্টরি খালি নয়

আমি ইতিমধ্যে উইন্ডোজ .git- পুনর্লিখন ডিরেক্টরি মুছে ফেলার পরে এটি ছিল।

আমি কীভাবে এই ফাইলটি সরিয়ে ফেলতে পারি? এটি আমার রেপোতে বসে একটি 29 এমবি ফাইল, সুতরাং আমার ফাইলটি সরিয়ে ফেলা দরকার।

আমি এই প্রতিশ্রুতিটি মুছে ফেলার চেষ্টা করেছি git rebase -i, তবে দৃশ্যত কারণ এই প্রতিশ্রুতিটি বিভিন্ন ফাইলগুলিকে স্পর্শ করেছে, গিট দ্বন্দ্বের অভিযোগ করেছে এবং আমি নিরাপদ থাকতে বাধ্য করেছি।


1
অনুসন্ধান ইঞ্জিনগুলির জন্য: আপনার ত্রুটি বার্তার সময় এটি প্রয়োগ হতে পারে .git-rewrite already exists, please remove it
ড্রয় নোকস

উত্তর:


219

আপনি ইতিমধ্যে একটি ফিল্টার-শাখা অপারেশন করেছেন have ফিল্টার-ব্রাঞ্চের পরে, গিট কিছু ভুল হয়ে যাওয়ার পরে পুরানো কমিটগুলির প্রতিশ্রুতি রাখে।

আপনি এটি খুঁজে পেতে পারেন .git/refs/original/…। হয় ডিরেক্টরি এবং সমস্ত ফাইলই এর মধ্যে -fমুছুন বা পুরানো তথ্যগুলি মুছতে গিটকে বাধ্য করতে পতাকা ব্যবহার করুন ।

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

10
অবশেষে এটি কাজ করে, ধন্যবাদ! আমি -f পতাকাটি চেষ্টা করেছিলাম, তবে সমস্যাটি হ'ল আমি এটি কমান্ডের শেষে রেখেছিলাম eg হেড -ফ। আপনার কমান্ডটি দেখে আমাকে পতাকাটি শুরু করার চেষ্টা করানো হয়েছিল, এবং এটি কার্যকর হয়েছিল! = ডি
কার্ডিন

12
বিকল্প পতাকা ( -f) রেফ ( HEAD) এর আগে যায় ।
রেফসগুলি

-ফ যোগ করার পরে এবং ডিরেক্টরিটি মুছার পরেও আমি একই ত্রুটি পেয়েছি। কোন ধারনা?
ইয়ারন

1
@ Knittl, আমি উল্লেখ করছি না git add.git/refs/original/ফোল্ডারটি মোছার পরে এবং কমান্ডের -fপতাকাটি ব্যবহার করার পরেও আমি মূল পোস্টার হিসাবে একই ত্রুটি পেয়েছি git filter-branch। আমার ক্ষেত্রে সমাধানটি ছিল .git/packed-refsফাইলটি মুছে ফেলা ।
ইয়ারন

1
@ ক্যানিটল, আমি এটি ঠিক করতে কীভাবে খুঁজে পেয়েছি, তবে কী সমস্যা ছিল তা খুঁজে পেলাম না। মূলত, আমি --ignore-unmatchকমান্ডে যুক্ত করেছি git rmএবং এটি সহজেই চলে গেছে!
গ্যাব্রিয়েলিয়াস

21

আসল ব্যাকআপ সরানোর জন্য এই কমান্ডটি ব্যবহার করুন:

git update-ref -d refs/original/refs/heads/master

আমি আমার গিট রেপো ফিল্টার-শাখা ব্যবহার করার জন্য এখানে প্রকাশ করেছি: https://gist.github.com/k06a/25a0214c98bc19fd6817


ব্যাকআপ সরিয়ে ফেলার এটিই সঠিক সমাধান! মোছা .git/refs/original/সমস্যার সমাধান করে না।
এরিক কোওপম্যানস

আপনি যে শাখাকে ঠিক করার চেষ্টা করছেন সেটিতে 'মাস্টার' পরিবর্তন করার বিষয়টি নিশ্চিত করুন .. আমার ক্ষেত্রে 'বিকাশ'
ড্যামিয়ান গ্রিন

git show-ref | awk '/ refs.original.refs/{print$2}'আপনার রেপোতে থাকা সমস্ত ব্যাকআপ খুঁজে পেতে।
ডান

4

আমার একই সমস্যা ছিল এবং উপরের উত্তরটি এটি ঠিক করে নি। কোনও .git / refs / original / ডিরেক্টরি বাকি ছিল না। আমার জন্য সমাধানটি ছিল .git / প্যাকড-রেফেস ফাইলটি মুছে ফেলা।


একই সমস্যা. কোন .git/packed-refsফাইল, কিন্তু, এবং কোন ফোল্ডারের originalমধ্যে .git/refs। যে কেউ?
XedinUnmitted

কমান্ডে পতাকা যুক্ত করে এখানে সমাধান করা হয়েছে-r
XedinUnعلوم

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

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