একটি স্থানীয় ফাইল সিস্টেম থেকে মুছে ফেলা ছাড়া একটি Git ভাণ্ডার থেকে একটি ফাইল সরান
repository remote-server (6)
আমার প্রাথমিক কমিটিতে কিছু লগ ফাইল রয়েছে। আমি যোগ করেছি *log
আমার .gitignore
*log
, এবং এখন আমি আমার সংগ্রহস্থল থেকে লগ ফাইল অপসারণ করতে চান।
git rm mylogfile.log
সংগ্রহস্থল থেকে একটি ফাইল মুছে ফেলবে, তবে এটি স্থানীয় ফাইল সিস্টেম থেকেও মুছে ফেলবে।
ফাইলটি আমার স্থানীয় কপি মুছে ফেলার পরে আমি কিভাবে এই ফাইলটি রেপো থেকে সরাতে পারি?
Git আপনাকে অপরিবর্তিত মনে করে সেগুলি ফাইলগুলিকে উপেক্ষা করে। এটি
git update-index --assume-unchanged path/to/file.txt
কমান্ড চালানোর দ্বারা সম্পন্ন করা হয়। একবার একটি ফাইল চিহ্নিত করার পরে, git সেই ফাইলের যে কোনও পরিবর্তন সম্পূর্ণরূপে উপেক্ষা করবে; তারা গিট স্ট্যাটাস বা গিট diff চলমান যখন প্রদর্শিত হবে না, তারা কখনও প্রতিশ্রুতিবদ্ধ হবে।
( https://help.github.com/articles/ignoring-files থেকে)
অতএব, এটি মুছে ফেলা, কিন্তু চিরতরে পরিবর্তন উপেক্ষা। আমি মনে করি এটি স্থানীয়ভাবে কাজ করে, তাই সহকর্মীরা এটির উপরে পরিবর্তনগুলি দেখতে পারে না যতক্ষণ না তারা উপরের কমান্ড চালায়। (এখনও এই যাচাই করতে হবে।)
দ্রষ্টব্য: এটি সরাসরি প্রশ্নের উত্তর দিচ্ছে না, তবে অন্যান্য উত্তরের মন্তব্যগুলিতে অনুসরণের প্রশ্নগুলির উপর ভিত্তি করে।
আপনি স্থানীয় ফাইল সিস্টেম থেকে মুছে ফেলা ছাড়া আপনার। জিটিগনোর উপর ভিত্তি করে সংগ্রহস্থল থেকে ফাইলগুলি সরাতে পারেন:
git rm --cached `git ls-files -i -X .gitignore`
অথবা, বিকল্পভাবে, উইন্ডোজ পাওয়ারশেল-এ:
git rm --cached $(git ls-files -i -X .gitignore)
আরো জেনেরিক সমাধান:
সম্পাদনা।
.gitignore
ফাইল।ECHO mylogfile.log >> .gitignore
সূচক থেকে সব আইটেম সরান।
git rm -r -f --cached .
সূচক পুনর্নির্মাণ।
git add .
নতুন কমিটি করুন
git commit -m "Removed mylogfile.log"
উপরোক্ত উত্তর আমার জন্য কাজ করে না। আমি সব প্রতিশ্রুতিবদ্ধ ফাইল মুছে ফেলার জন্য ফিল্টার-শাখা ব্যবহার
একটি গিট রেপোজিটরি থেকে একটি ফাইল মুছে ফেলুন:
git filter-branch --tree-filter 'rm file'
একটি গিট রিপোজিটরি থেকে একটি ফোল্ডার মুছে ফেলুন:
git filter-branch --tree-filter 'rm -rf directory'
এটি সমস্ত commits থেকে ডিরেক্টরি বা ফাইল মুছে ফেলা
আপনি ব্যবহার করে একটি কমিটি নির্দিষ্ট করতে পারেন:
git filter-branch --tree-filter 'rm -rf directory' HEAD
অথবা একটি পরিসীমা
git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD
রিমোট সবকিছু ধাক্কা দিতে, আপনি করতে পারেন:
git push origin master --force
এছাড়াও, যদি আপনি সংবেদনশীল ডেটা (যেমন একটি পাসওয়ার্ড ধারণকারী ফাইল) সীমাবদ্ধ করেছেন, তবে আপনাকে এটি সম্পূর্ণরূপে সংগ্রহস্থলের ইতিহাস থেকে মুছে ফেলতে হবে। এখানে কীভাবে এটি করা যায় তা ব্যাখ্যা করে একটি গাইড: http://help.github.com/remove-sensitive-data/
রেপো থেকে একটি সম্পূর্ণ ফোল্ডার মুছে ফেলার জন্য (যেমন রিশারপার ফাইলগুলি), এটি করুন:
git rm -r --cached folderName
আমি কিছু resharper ফাইল করেছি, এবং অন্যান্য প্রকল্প ব্যবহারকারীদের জন্য যারা অবিরত করতে চান না।