গিট ট্র্যাকিং থেকে একটি ফোল্ডার সরান


403

ট্র্যাকিং থেকে আমাকে একটি ফোল্ডার (নাম আপলোডগুলি) বাদ দিতে হবে। আমি দৌড়ানোর চেষ্টা করেছি

git rm -r --cached wordpress/wp-content/uploads

এবং তার পরে আমি .gitignore এ পথটি যুক্ত করেছি

/wordpress/wp-content/uploads

তবে আমি যখন দৌড়েছি git statusতখন তারা মুছে ফেলা হিসাবে প্রদর্শিত হবে। আমি যদি পরিবর্তনগুলি সম্পাদন করার চেষ্টা করি তবে ফাইলগুলি কেবল ট্র্যাকিং থেকে সরিয়ে ফেলা হবে না।

আমি কি ভুল করছি?

আমি চেষ্টাও করেছি

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

তবে এটি কেবল ফাইলগুলিকে অনার্যাক করে বলে মনে হচ্ছে। তবে ট্র্যাকিং থেকে আমার একটি সম্পূর্ণ ফোল্ডার (সাবফোল্ডার সহ) সরিয়ে ফেলতে হবে।


মোছা হওয়ার অর্থ এই নয় যে গিটটি আপনার ফাইলগুলি মুছে ফেলবে। তবে আপনি যদি ব্যবহার করেন তবে reset --hardতা হবে।
কেল্টার

2
যেমন @ কলটার উল্লেখ করেছেন, প্রতিশ্রুতিবদ্ধকরণগুলি আপনার ফাইলগুলি মোছার কারণ হবে না। এটি গিট থেকে তাদের মুছে ফেলার প্রতিশ্রুতি দেবে , তবে আপনার ওয়ার্কিং অনুলিপিতে সেগুলি এখনও থাকবে। তবে আপনি যদি pullঅন্য কোথাও প্রতিশ্রুতি দেন তবে সেই ফাইলগুলি নতুন সিস্টেম থেকে মুছে ফেলা হবে
ক্রিস

উত্তর:


866

"ট্র্যাকিং থেকে গিট অপসারণ ফোল্ডার" এর জন্য গুগলিংয়ের সময় আমি এই প্রশ্নটি পেয়েছি। ওপির প্রশ্ন আমাকে উত্তরের দিকে নিয়ে যায়। আমি ভবিষ্যতের প্রজন্মের জন্য এটি সংক্ষিপ্ত করছি।

প্রশ্ন

আমি আমার গিট সংগ্রহস্থল থেকে আমার স্থানীয় মেশিনে (অর্থাত্ বিকাশের পরিবেশ) মুছে না ফেলে কীভাবে সরিয়ে ফেলব?

উত্তর

পদক্ষেপ 1. আপনার রেপোর রুট .gitignoreফাইলটিতে ফোল্ডারের পাথ যুক্ত করুন।

path_to_your_folder/

পদক্ষেপ 2. আপনার স্থানীয় গিট ট্র্যাকিং থেকে ফোল্ডারটি সরান, তবে এটি আপনার ডিস্কে রাখুন।

git rm -r --cached path_to_your_folder/

পদক্ষেপ ৩. আপনার পরিবর্তনগুলি আপনার গিট রেপোতে চাপুন।

ফোল্ডারটি গিতের দৃষ্টিকোণ থেকে "মুছে ফেলা" হিসাবে বিবেচিত হবে (যেমন তারা অতীত ইতিহাসে রয়েছে তবে সর্বশেষ প্রতিশ্রুতিতে নয়, এবং এই রেপো থেকে টানা লোকেরা ফাইলগুলি তাদের গাছ থেকে সরিয়ে ফেলবে), তবে আপনার কার্যক্ষম ডিরেক্টরিতে থাকুন কারণ আপনি ব্যবহার করেছেন --cached


2
দ্রুত প্রশ্ন, ফোল্ডারের পথটি কি পুরো পথ হতে হবে? বা গিট রিপোজিটরির ভিত্তি হিসাবে কাজ করার জন্য কেবল পথ?
এইচএমএসসেলেস্তিয়া

আমি বিশ্বাস করি এটি পুরো পথ, তবে নিশ্চিত মনে রাখবেন না।
টড বার্ডসাল 21

7
"এবং এই রেপো থেকে টানা লোকেরা ফাইলগুলি তাদের গাছ থেকে সরিয়ে ফেলবে" আমি কি এটি প্রতিরোধ করতে পারি?
লিও গ্যাসপারিনি

এটি আমার ফাইলগুলিকে একটি শাখায় ট্র্যাকিং থেকে সঠিকভাবে সরিয়ে দিয়েছে, তবে মার্জ হওয়ার পরে সেগুলি মুছে ফেলেছে!
হ্যারল্ড

1
আমার জন্য এখনও আছে। এছাড়াও - ফোল্ডারে থাকা কোনটি কমিট করার সময় আমার কি সেই ফাইলগুলি নির্বাচন করা উচিত? আমি দু'ভাবেই চেষ্টা করেছি। যদি অনির্বাচিত হয় তবে এটি চাপ দিতে দেয় না, তবে তারপরে আমি অন্য একটি ফাইলের মধ্যে একটি চর পরিবর্তন করেছি যা ট্র্যাক করা উচিত। এখনও সহায়তা করে না
দারিয়াস.ভি

44

এটি আমার পক্ষে কাজ করে:

git rm -r --cached --ignore-unmatch folder_name

--ignore-unmatch এখানে গুরুত্বপূর্ণ, অপশনটি ছাড়াই গিটটি ত্রুটি সহ প্রস্থান করবে প্রথম ফাইলটিতে সূচক নয়।


unknown option 'ignore unmatched'
ইনিগো

ডিরেক্টরিটি খালি থাকলে এটি একটি গুরুত্বপূর্ণ পতাকা, আপনাকে ধন্যবাদ!
এমএনএন

খুব কার্যকর যদি আপনি কেবল একটি ডিরেক্টরি থেকে কিছু ফাইল এক্সটেনশনও সরিয়ে নিতে চান:git rm -r --cached --ignore-unmatch .idea/*.xml
টাকানুভা 15

14

ডিরেক্টরিটি ভুলে /*/*যাওয়ার জন্য পুনরাবৃত্তভাবে পথে যুক্ত করুন:

git update-index --assume-unchanged wordpress/wp-content/uploads/*/*

git rm --cachedসহযোগিতার জন্য ব্যবহার করা ভাল নয়। আরও বিশদ এখানে: গিটে কোনও ফাইলের পরিবর্তনগুলি কীভাবে ট্র্যাকিং এবং উপেক্ষা করা যায়?


1
এটি একটি খুব মার্জিত সমাধান! পুনরাবৃত্তির পথের কৌশলটি আমার দিনকে বাঁচিয়েছিল। ধন্যবাদ!
আজিজ আল্টো

8

আমি জানি এটি একটি পুরানো থ্রেড তবে চিহ্নিত সমাধানটি আমার জন্য সমস্যাটি সমাধান না করায় আমি কেবল কিছুটা যুক্ত করতে চেয়েছিলাম (যদিও আমি বহুবার চেষ্টা করেছি)।

ফোল্ডারটি ট্র্যাকিংয়ের জন্য আমি কেবল গিট ফর্মটি থামাতে পারি নি তা ছিল:

  1. স্থানীয় ফোল্ডারটির একটি ব্যাকআপ নিন এবং একটি নিরাপদ স্থানে রাখুন।
  2. আপনার স্থানীয় রেপো থেকে ফোল্ডারটি মুছুন
  3. ক্যাশে সাফ হয়েছে তা নিশ্চিত করুন git rm -r --cached your_folder/
  4. যোগ your_folder/ .gitignore করতে
  5. পরিবর্তন প্রতিশ্রুতিবদ্ধ
  6. আপনার রেপোতে ব্যাকআপটি যুক্ত করুন

আপনার এখন দেখা উচিত যে ফোল্ডারটি আর ট্র্যাক করা হয়নি।

আমাকে জিজ্ঞাসা করবেন না কেন কেবল ক্যাশে সাফ করা আমার পক্ষে কাজ করে না, আমি গিট সুপার উইজার্ড নই তবে আমি এইভাবে সমস্যার সমাধান করেছি।


ধন্যবাদ!!! গ্রীট .মেডাটাটা ফোল্ডারটি উপেক্ষা না করে গিট আমাকে পাগল করছে। Eclipse .metadata ফোল্ডারের সাহায্যে আপনার পদক্ষেপগুলি অনুসরণ করে এবং শেষ পর্যন্ত এটি কার্যকর হয়েছিল।
মাস্টারএন 8

5

গিট ডকুমেন্টেশন থেকে:

আর একটি দরকারী জিনিস আপনি যা করতে চাইতে পারেন তা হ'ল ফাইলটি আপনার কার্যক্ষম গাছের মধ্যে রাখুন তবে এটি আপনার মঞ্চ অঞ্চল থেকে সরিয়ে দিন। অন্য কথায়, আপনি ফাইলটি আপনার হার্ড ড্রাইভে রাখতে চান তবে গিটটিকে আর ট্র্যাক করতে হবে না। এটি বিশেষত কার্যকর যদি আপনি নিজের .gitignore ফাইলটিতে কিছু যুক্ত করতে ভুলে গিয়েছিলেন এবং দুর্ঘটনাক্রমে এটিকে মঞ্চস্থ করেন, যেমন একটি বড় লগ ফাইল বা .a সংকলিত ফাইলগুলির একটি গোছা। এটি করার জন্য - - ক্যাশেড বিকল্পটি ব্যবহার করুন:

$ git rm --cached readme.txt

সুতরাং সম্ভবত "-r" অন্তর্ভুক্ত করবেন না?


1
ওপি ইতিমধ্যে চেষ্টা করেছে --cached-rবিকল্প "রিকার্সিভ", যা এই ইনস্ট্যান্সের মধ্যে অন্তর্ভুক্ত করা উচিত জন্য।
ক্রিস

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