gitignore ফোল্ডার উপেক্ষা করে না


135

আমার প্রকল্পের মূলে আমার একটি fooফোল্ডার রয়েছে। fooফোল্ডারের ভিতরে আমার একটি barফোল্ডার রয়েছে। আমি আমার barফোল্ডারের ভিতরে থাকা সমস্ত ফাইলের সমস্ত পরিবর্তন উপেক্ষা করতে চাই । আমার মধ্যে এটি আছে gitignore:

/foo/bar

ফোল্ডারটি চেক করা হয়েছে: এটি বিদ্যমান এবং এতে ফাইলগুলি উপেক্ষা করা হবে। gitignoreহয় commitটেড। যাইহোক, আমার একটি ফাইল রয়েছে যেখানে আমি একটি শোধন করি এবং আমার barফোল্ডারের ভিতরে । আমি যখন টাইপ করি

git status

আমার ভিতরে git bashআমি ফাইলটি দেখছি যা উপেক্ষা করা উচিত ছিল। এর কারণ কী হতে পারে এবং আমি কীভাবে সফলভাবে আমার বার ফোল্ডারের সমস্ত ফাইল উপেক্ষা করতে পারি?

দ্রষ্টব্য, ফাইলগুলি একই লাইন দ্বারা পূর্বে উপেক্ষা করা হয়েছিল, কিন্তু আমি অস্থায়ীভাবে সেই লাইনটি commitসার্ভারের কিছুতে সরিয়ে ফেলতে হয়েছিল। এর পরে commit, আমি লাইনটি পিছনে রেখেছি gitignore। এটি কিছুক্ষণ আগে ছিল, তবে এখন আমি পর্যবেক্ষণ করেছি যে ফাইলগুলি হবে git status। আমি প্রত্যাশা করব যে উপেক্ষা করা ফাইলগুলি তারা উপস্থিত না করেই তাদের সংশোধন করতে সক্ষম হবে git status


ভবিষ্যতে, আপনাকে উপেক্ষা করা কিছু যুক্ত করতে আপনার উপেক্ষাগুলি সংশোধন করার দরকার নেই। git add -f ignored-fileএটি কোনও ফাইল যুক্ত না করলেও তা আপনার উপেক্ষা করে।
ক্রিস

কি দেয় git status foo/bar/file-that-should-be-ignored?
ক্রিস

কোনও পরিবর্তন ঘটলে ফাইলটিকে উপেক্ষা করা উচিত। আমি অবশ্যই কিছুটা মিস করছি, তবে আমার জ্ঞান অনুসারে গিটের স্থিতির তালিকাটি সেই ক্ষেত্রে খালি থাকা উচিত যদি / foo / বার .gitignore এ উপস্থিত থাকে
লাজোস

4
দেখে মনে হচ্ছে যে ফাইলটি আসলে গিট দ্বারা ট্র্যাক করা হয়েছে। এটি অবশ্যই কোনও পর্যায়ে সংগ্রহস্থলে যুক্ত করা উচিত। আপনি এর ইতিহাস দেখতে পারেন git log foo/bar/file-that-should-be-ignored। যদি এটি সংগ্রহস্থলের অংশ না হয়ে থাকে তবে আপনার এটির সাথে সরিয়ে ফেলা উচিত git rm --cached foo/bar/file-that-should-be-ignoredএবং তারপরে নীচে রেকের পরামর্শ অনুসারে প্রতিশ্রুতিবদ্ধ (যদিও আমি এটি কেবল ফাইলটিতে করব, পুরো ফোল্ডারটি নয়)। এটি (ক) গিট থেকে ফাইলটি সরিয়ে ফেলবে, (খ) ফাইলটি আপনার স্থানীয় অনুলিপিতে রাখবে এবং (গ) অন্যরা fetchবা pullনতুন প্রতিশ্রুতিবদ্ধ হলে ফাইলটি মোছার কারণ হবে ।
ক্রিস

উত্তর:


341

আমি অনুমান করছি এই ফোল্ডারটি আগে গিট মধ্যে পরীক্ষা করা হয়েছে?

দৌড়ে git rm -r --cached <folder>আবার চেক করুন।


3
এটি (বর্তমান সংস্করণ) রেপো থেকে ফোল্ডারটি পুরোপুরি সরিয়ে ফেলবে। ওপি ফোল্ডারটি সেখানে থাকতে চায়, তবে নতুন পরিবর্তনগুলি ট্র্যাক করা উচিত নয়
গ্যারেথ

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

12
git update-index --assume-unchanged <folder>সম্ভবত?
রেক

3
@ লাজোসকে কি এখানে এই বিভ্রান্তিকর "সম্পাদনা" মন্তব্য যুক্ত করার পরিবর্তে তার বাগটি ঠিক করা উচিত নয়?
ক্রেগক্স

2
@ কাওস, যেহেতু এই সাইটটি জ্ঞান ভাগাভাগি সম্পর্কিত, উত্তরটি হ'ল: না। এটি একটি বাগ সহ একটি উত্তর গ্রহণ করা বিভ্রান্তিকর। যে -r optionচ্ছিক নয়।
লাজোস আরপাদ

46

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

  1. আপনার যে পরিবর্তন করতে হবে / পরিবর্তন করতে হবে তা প্রতিশ্রুতিবদ্ধ।
  2. এই আদেশটি চালান: git rm -r --cached .(যা আপনার গিট সংগ্রহস্থলকে রিফ্রেশ করার জন্য গিট সূচক থেকে সমস্ত কিছু সরিয়ে দেয়)
  3. তারপরে এই কমান্ডটি চালান: git add .(রেপোতে সমস্ত কিছু যুক্ত করতে)
  4. অবশেষে, এই পরিবর্তনগুলি ব্যবহার করে প্রতিশ্রুতিবদ্ধ git commit -m ".gitignore Fixed"

আপনি নিবন্ধটির লিঙ্কটি সন্ধান করতে পারেন সেখান থেকে সমাধানটি এখানে পেয়েছি ।


1
এটি মূল প্রশ্নের উপর ভিত্তি করে একটি কার্যকর সমাধান নয়। @ লেগোস-আরপ্যাড বিশেষভাবে একটি সাব-ডাইরেক্টরি সম্পর্কে জিজ্ঞাসা করেছিলেন পুরো প্রকল্পটি নয়। আপনার সমাধান গিট সংগ্রহস্থলের মূল স্তর থেকে সমস্ত কিছু সরিয়ে দেয় এবং এই সমস্যাটি মোকাবেলার জন্য এটি কোনও প্রস্তাবিত পদ্ধতি নয়।
justinhartman

এমনকি এটি কেবলমাত্র একটি উপ-ডিরেক্টরি হলেও, এই সমাধানটি আমার পক্ষে কাজ করেছিল কারণ আমি কেবল একটি ফাইলই ডিল করছি। কেন আপনি এটির সুপারিশ করা হয়নি তা দয়া করে বিস্তারিত বলতে পারেন?
সিকান্দারবাওয়ানি

1
আপনি যার সাথে লেনদেন করেছিলেন তা অবিরাম। এটি প্রশ্নের উত্তর নয় এবং অন্য উত্তরটি উল্লেখ করেছে বলে এটি সম্ভবত বিপজ্জনক। এটি দূরবর্তী রেপোতে থাকা সামগ্রীগুলি সরিয়ে দেয় যা আপনি অগত্যা চান না।
রিচিএইচএইচ

8

আমার এই সমস্যাটি ছিল এবং আমি বুঝতে পেরেছি যে গিটটি আসলে ফাইল / ফোল্ডারগুলি সঠিকভাবে উপেক্ষা করছে, তবে আমার কোড সম্পাদক (ভিজ্যুয়াল স্টুডিও কোড) কেবল বগি ছিল এবং ইউআই সাইডবারে সঠিকভাবে "সেগুলি ছাঁটাই করে নি"। আমি ভিএসকোড পুনরায় চালু করেছি এবং তারা প্রত্যাশা অনুযায়ী গ্রেড হয়েছিল।


এখানে একই: ভিএস কোড v1.30.2 (ব্যবহারকারীর)
x x 20

আমার জন্যও একই. এই সমাধানের জন্য আপনাকে অনেক ধন্যবাদ! আমি ভাবছিলাম যে আমার .gitignore কাজ করছে না যতক্ষণ না আমি ভিএস কোড পুনরায় চালু করার চেষ্টা করেছি I আমি ভিজ্যুয়াল স্টুডিও কোড v1.44.2 তে করছি।
ফ্রিটজ লিম

6

অতিরিক্ত হিসাবে গৃহীত উত্তর

git rm -r --cached /foo/bar/
git status

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

git reset HEAD *
git status

এর পরে, এটি প্রতিশ্রুতিবদ্ধ হওয়ার জন্য কিছুই বলেনি এবং যখন আমি ভিতরে ফাইলগুলি সংশোধন করি /foo/bar/এবং git statusতখনও পাই nothing to commit


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