Git: কোনও সংগ্রহস্থল থেকে ফাইল মুছে না দিয়ে সূচী থেকে ফাইলটি সরিয়ে ফেলতে হবে




version-control gitignore (5)

  1. git rm --cached remove_file
  2. gitignore ফাইল যোগ করুন
  3. git add .gitignore
  4. git commit -m "Excluding"
  5. আনন্দ কর ;)

যখন আপনি ব্যবহার করেন

git rm --cached myfile

এটি স্থানীয় ফাইল সিস্টেম থেকে মুছে ফেলা হয় না, যা লক্ষ্য। কিন্তু যদি আপনি ইতিমধ্যেই সংস্করণটি তৈরি করেছেন এবং ফাইলটি তৈরি করেছেন, এটি একটি কেন্দ্রীয় সংগ্রহস্থলের দিকে ঠেলে দিয়েছেন এবং কমান্ডটি ব্যবহার করার আগে এটি অন্য একটি সংগ্রহস্থলটিতে টেনে নিয়েছেন তবে এটি সেই সিস্টেমের ফাইলটি মুছে দেবে।

কোনও ফাইল সিস্টেম থেকে এটি মুছে ফেলা ছাড়াই সংস্করণ থেকে ফাইলটি সরানোর উপায় আছে কি?

সম্পাদনা: পরিষ্কার, আমি আশা করি।


আমার সমাধান অন্যান্য কাজ কপি টান এবং তারপর করবেন:

git log --pretty="format:" --name-only -n1 | xargs git checkout HEAD^1

যা সর্বশেষ মন্তব্যে সমস্ত ফাইল পাথ পান, এবং HEAD এর পিতামাতার থেকে তাদের পরীক্ষা করে দেখুন। কাজ শেষ.


উপরোক্ত সমাধান অধিকাংশ ক্ষেত্রে জন্য সূক্ষ্ম কাজ। যাইহোক, যদি আপনাকে সেই ফাইলের সমস্ত ট্রেসগুলি (যেমন পাসওয়ার্ড হিসাবে সংবেদনশীল তথ্য) সরাতে হবে, তবে আপনি এটিকে আপনার সম্পূর্ণ সম্মতি ইতিহাস থেকে সরাতে চান, কারণ ফাইলটি এখনও সেখানে থেকে উদ্ধার করা যেতে পারে।

এখানে এমন একটি সমাধান যা আপনার সমগ্র কমিটির ইতিহাস থেকে ফাইলের সমস্ত ট্রেস মুছে ফেলে, যদিও এটি অস্তিত্বহীন না হলেও এখনও আপনার সিস্টেমে ফাইলটি রাখে।

https://help.github.com/articles/remove-sensitive-data/

আপনি যদি আপনার স্থানীয় গিট রিপোজিটরিতে থাকেন তবে আপনি পদক্ষেপ 3 এ যেতে পারেন এবং একটি শুষ্ক চালানোর প্রয়োজন হয় না। আমার ক্ষেত্রে, আমার কেবলমাত্র 3 এবং 6 টি পদক্ষেপ দরকার, কারণ আমি ইতিমধ্যেই আমার। জিটিগনোর ফাইল তৈরি করেছি, এবং আমি যে রিপোজিটরিতে কাজ করতে চেয়েছিলাম সেটি ছিল।

আপনার পরিবর্তনগুলি দেখতে আপনাকে আপনার রিপোজিটরির GitHub root এ যেতে হবে এবং পৃষ্ঠাটি রিফ্রেশ করতে হবে। তারপরে একটি পুরনো কমিটির কাছে যাওয়ার জন্য লিঙ্কগুলির মাধ্যমে নেভিগেট করুন যা একবারে ফাইলটি ছিল, এটি এখন মুছে ফেলা হয়েছে কিনা তা দেখতে। আমার জন্য, কেবল পুরানো কমিটির পৃষ্ঠাকে রিফ্রেশ করে পরিবর্তনটি দেখানো হয়নি।

এটি প্রথম দিকে ভয়ঙ্কর লাগছিল, কিন্তু সত্যিই, সহজ এবং একটি যাদুমন্ত্র মত কাজ! :-)


এই সপ্তাহে একই সমস্যা ছিল যখন আমি ঘটনাক্রমে প্রতিশ্রুতিবদ্ধ ছিলাম, তারপরে একটি ভাগ করা সংগ্রহস্থল থেকে একটি বিল্ড ফাইল সরানোর চেষ্টা করেছি, এবং এই:

http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html

আমার জন্য জরিমানা কাজ করেছে এবং এতদূর উল্লিখিত না।

git update-index --assume-unchanged <file>

আপনি যে সংস্করণে আগ্রহী সেটি মুছে ফেলার জন্য, তারপরে আপনার অন্যান্য কমান্ডগুলি স্বাভাবিক হিসাবে ব্যবহার করুন।

git update-index --no-assume-unchanged <file>

আপনি যদি কখনও এটা ফিরে রাখতে চেয়েছিলেন।

সম্পাদন করুন: ক্রিস জনসেন এবং কেপএম থেকে মন্তব্য দেখুন, এটি কেবল স্থানীয়ভাবে কাজ করে এবং ফাইলটি অন্যান্য ব্যবহারকারীদের জন্যও যদি তারা এটি না করে তবে সংস্করণ নিয়ন্ত্রণের অধীনে থাকে। গৃহীত উত্তর এই সঙ্গে ডিল করার জন্য আরো সম্পূর্ণ / সঠিক পদ্ধতি দেয়। এছাড়াও এই পদ্ধতি ব্যবহার করে লিঙ্ক থেকে কিছু নোট:

অবশ্যই এই সঙ্গে খেলা করতে আসা বেশ কয়েকটি caveats আছে। যদি আপনি সরাসরি ফাইলটি যোগ করেন তবে এটি সূচীতে যোগ করা হবে। এই পতাকা দিয়ে একটি সংঘটিতকরণকে মার্জ করার ফলে মার্জটি চিত্তাকর্ষকভাবে ব্যর্থ হতে পারে যাতে আপনি এটি নিজে পরিচালনা করতে পারেন।


git rm --cached কমান্ডটি করার পরে, myfile .gitignore ফাইলে যোগ করার চেষ্টা করুন (যদি এটি বিদ্যমান না হয় তবে একটি তৈরি করুন)। এই myfile উপেক্ষা উপেক্ষা করতে হবে।

.gitignore ফাইলটি .gitignore , তাই আপনাকে এটি করতে এবং রিমোট রিপোজিটরিতে ধাক্কা দিতে হবে।








git-rm