গিটিগনোর ফাইল আপডেট করার পরে কি গিট রিপোজিটরিটি "রিফ্রেশ" করা সম্ভব?
আমি আমার গিটিগনরে সবেমাত্র আরও অবহেলা (?) যুক্ত করেছি এবং নতুন ফাইলের সাথে মিলে থাকা রেপোতে ইতিমধ্যে জিনিসগুলি সরিয়ে ফেলতে চাই।
গিটিগনোর ফাইল আপডেট করার পরে কি গিট রিপোজিটরিটি "রিফ্রেশ" করা সম্ভব?
আমি আমার গিটিগনরে সবেমাত্র আরও অবহেলা (?) যুক্ত করেছি এবং নতুন ফাইলের সাথে মিলে থাকা রেপোতে ইতিমধ্যে জিনিসগুলি সরিয়ে ফেলতে চাই।
উত্তর:
" .Gitignore ফাইল উপেক্ষা না করে " উল্লিখিত সমাধানটি কিছুটা চরম, তবে কাজ করা উচিত:
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
( আপনার পরিবর্তনগুলি রাখতে চান প্রথম কমিট করতে ভুলবেন না কোন ঘটনা এড়াতে, jball037 মন্তব্য নিচে । বিকল্প আপনার ফাইলগুলি আপনার ডিস্ক যদিও উপর অক্ষত রাখা হবে।)--cached
ব্লগ পোস্টে "আরও আগে থেকেই ট্র্যাক করা ফাইলগুলি উপেক্ষা করুন " গিটটিতে আপনার আরও আরও সূক্ষ্ম সমাধান রয়েছে :
git rm --cached `git ls-files -i --exclude-standard`
বাসিম তার সম্পাদনায় পরামর্শ দেয় :
আপনি যদি কোনও ত্রুটির বার্তা পেয়ে
fatal: path spec '...' did not match any filesথাকেন তবে তাদের পথে ফাঁকা স্থানগুলি থাকতে পারে।আপনি বিকল্প সহ অন্যান্য সমস্ত ফাইল মুছতে পারেন
--ignore-unmatch:
git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`
তবে তুলনাহীন ফাইলগুলি আপনার সংগ্রহস্থলের মধ্যে থেকে যাবে এবং ডাবল উদ্ধৃতি দিয়ে তাদের পথটি স্পষ্টভাবে মুছে ফেলতে হবে:
git rm --cached "<path.to.remaining.file>"
আমি ভুল বুঝতে পারি, তবে আপনি কি নতুনভাবে উপেক্ষা করা ফাইলগুলি মুছতে চাইছেন বা আপনি এই ফাইলগুলিতে নতুন পরিবর্তনগুলি উপেক্ষা করতে চান? এই ক্ষেত্রে, জিনিস কাজ করছে।
আপনি যদি পূর্বে প্রদত্ত উপেক্ষা করা ফাইলগুলি মুছতে চান তবে ব্যবহার করুন
git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'
git ls-files -i –exclude-standard git rm –cated git কমিট -m 'ক্লিন আপ ``
আমি জানি এটি একটি পুরানো প্রশ্ন, তবে ফাইলের নাম ফাঁক থাকলে গ্র্যাচাসের সমাধান কাজ করে না। স্পেস সহ নাম ফাইল করার জন্য ভনসির সমাধান হ'ল এগুলি ব্যবহার করে সরিয়ে না দেওয়া --ignore-unmatch, তারপরে ম্যানুয়ালি মুছে ফেলুন, তবে অনেক কিছু থাকলে এটি ভাল কাজ করবে না।
এখানে এমন একটি সমাধান রয়েছে যা সমস্ত ফাইল ক্যাপচার করতে ব্যাশ অ্যারে ব্যবহার করে।
# Build bash array of the file names
while read -r file; do
rmlist+=( "$file" )
done < <(git ls-files -i --exclude-standard)
git rm –-cached "${rmlist[@]}"
git commit -m 'ignore update'