ডিরেক্টরিতে এক্সটেনশনের সমস্ত ফাইল gitignore


191

কোনও ডিরেক্টরিতে কোনও ধরণের সমস্ত ফাইল উপেক্ষা করার উপায় কি আছে?

** স্পষ্টতই গিটার অর্থহীন, সুতরাং এটি কাজ করে না:

/public/static/**/*.js

ধারণাটি নির্বিচারে নেস্টেড ফোল্ডারগুলির সাথে মেলে।


উত্তর:


121

কখনও এটা চেষ্টা করেছি, কিন্তু git help ignoreদাড়ায় যে আপনি একটি করা .gitignoreসঙ্গে *.jsমধ্যে /public/static, এটা কি আপনি চান করতে হবে।

দ্রষ্টব্য: নীচে জয়েসের উত্তরটিও পরীক্ষা করে দেখুন: আপনি যদি একটি নির্দিষ্ট সাব-ডিরেক্টরিতে ফাইলগুলি উপেক্ষা করতে চান তবে স্থানীয় .gitignore সঠিক সমাধান (লোকেশন ভাল)। তবে আপনার পুরো রেপোতে যদি একই প্যাটার্ন প্রয়োগ করতে হয় তবে ** সমাধানটি আরও ভাল is


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

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

209

এটি প্রদর্শিত হবে যে **সিনট্যাক্সটি ডকুমেন্টেশন অনুসারে gitসংস্করণ 1.8.2.1অনুসারে সমর্থিত ।

**পুরো পথের নামের সাথে মেলে নিদর্শনগুলিতে পর পর দুটি তীরচিহ্ন (" ") এর বিশেষ অর্থ হতে পারে:

  • **একটি স্ল্যাশ অনুসরণকারী একটি শীর্ষস্থানীয় মানে সমস্ত ডিরেক্টরিতে মিল match উদাহরণস্বরূপ, " **/foo" ফাইল বা ডিরেক্টরি " foo" যে কোনও জায়গায় মেলে , প্যাটার্নের সমান " foo"। " **/foo/bar" barসরাসরি ডিরেক্টরি অধীনে থাকা যে কোনও জায়গায় " " ফাইল বা ডিরেক্টরি " " এর সাথে মেলে foo

  • একটি পেছনের " /**" ভিতরে সমস্ত কিছু মেলে। উদাহরণস্বরূপ, " abc/**" ডিরেক্টরিতে সমস্ত ফাইল " " এর সাথে মেলে , " " অসীম গভীরতার সাথে ফাইলের abcঅবস্থানের .gitignoreসাথে সম্পর্কিত।

  • একটি স্ল্যাশ এরপরে পরপর দু'টি তারকাচিহ্নগুলি পরে একটি স্ল্যাশ শূন্য বা আরও বেশি ডিরেক্টরিতে মেলে। উদাহরণস্বরূপ, " a/**/b" মিলছে " a/b", " a/x/b", " a/x/y/b" এবং আরও অনেক কিছু।

  • অন্যান্য পর পরের অস্ট্রেলিকগুলি অবৈধ বলে বিবেচিত হয়।


1
xxx/**এবং মধ্যে পার্থক্য কি xxx/?
thuzhf

9
xxx/**এর মধ্যে থাকা সমস্ত ফাইল এবং ডিরেক্টরিকে লক্ষ্য করে xxxযেখানে সরাসরি ডিরেক্টরিকে xxx/লক্ষ্য করে xxx। প্রকৃতপক্ষে কেবল তখনই বিষয়গুলি অবলম্বন করে যখন !"সেই ফাইলের পিতামহিত ডিরেক্টরি বাদ দিলে কোনও ফাইল পুনরায় অন্তর্ভুক্ত করা সম্ভব নয় as", সুতরাং সেই ক্ষেত্রে ব্যবহার xxx/*বা xxx/**প্রয়োজনীয় হবে।
জোয়েহোয়ার

4
শেষ হওয়া .মেটা সহ সমস্ত ফাইল গিট দ্বারা উপেক্ষা করা উচিত। কিভাবে কাজ করে? **.js?
কালো

"অন্যান্য পর পরের নক্ষত্রগুলি অবৈধ হিসাবে বিবেচিত হয়।" সব মিলিয়ে
01 এ ইমরোক করুন

68

আপডেট: @ জয়ের উত্তরটি একবার দেখুন : গিট এখন **নিদর্শনগুলিতে সিনট্যাক্স সমর্থন করে। উভয় পন্থা সূক্ষ্মভাবে কাজ করা উচিত।


Gitignore (5) man পৃষ্ঠা পদ বলে:

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

এর অর্থ হ'ল .gitignoreআপনার রেপোর কোনও প্রদত্ত ডিরেক্টরিতে কোনও ফাইলের নিদর্শনগুলি সেই ডিরেক্টরি এবং সমস্ত উপ- ডিরেক্টরিকে প্রভাবিত করবে ।

আপনার দেওয়া প্যাটার্নটি

/public/static/**/*.js

একেবারে ঠিক নয়, প্রথমত কারণ (যেমন আপনি সঠিকভাবে উল্লেখ করেছেন) **সিনট্যাক্সটি গিট ব্যবহার করেন না। এছাড়াও, নেতৃস্থানীয় /অ্যাঙ্করগুলি পথের নামটি শুরু করার প্যাটার্ন করে। (সুতরাং, /public/static/*.jsমিলবে /public/static/foo.jsতবে মিলবে না /public/static/foo/bar.js )) নেতৃস্থানীয় অপসারণটি কোনওভাবেই /কাজ করে না, লাইক পাথের মতো public/static/foo.jsএবং পছন্দ করে foo/public/static/bar.jsসম্পাদনা: শীর্ষস্থানীয় স্ল্যাশ সরিয়ে ফেললে তা কার্যকর হবে না - কারণ প্যাটার্নটিতে এখনও একটি স্ল্যাশ রয়েছে, এটি গিট একটি সরল, পুনরাবৃত্ত শেল গ্লোব হিসাবে বিবেচনা করে দেখায় (ধন্যবাদ জোয়াই হোয়ার এটি নির্দেশ করার জন্য)।

যেমন @ptyx পরামর্শ দিয়েছে, আপনার যা করা দরকার তা হ'ল ফাইল তৈরি করা <repo>/public/static/.gitignoreএবং কেবল এই প্যাটার্নটি অন্তর্ভুক্ত করুন:

*.js

কোনও নেতৃস্থানীয় নেই /, সুতরাং এটি পাথের যে কোনও অংশে মিলবে এবং সেই প্যাটার্নটি কেবল কখনও /public/staticডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলির ফাইলগুলিতে প্রয়োগ করা হবে ।


2
বিশেষভাবে অংশ "নেতৃস্থানীয় সরানো হচ্ছে - এই সম্পূর্ণ সত্য নয় /পারেন কাজ করবে না, মত পাথ মিলে public/static/foo.jsএবং foo/public/static/bar.js।" মিথ্যা ডকুমেন্টেশনটির উদ্ধৃতি দিতে "যদি প্যাটার্নটিতে স্ল্যাশ থাকে না /, গিট এটি শেল গ্লোব প্যাটার্ন হিসাবে বিবেচনা করে এবং .gitignore ফাইলের অবস্থানের সাথে সম্পর্কিত নামের সাথে মিলের জন্য পরীক্ষা করে (কাজের গাছের উপরের স্তরের সাথে সম্পর্কিত যদি .gitignore ফাইল থেকে নয়)। foo/public/static/bar.jsমেলে না কারণ প্যাটার্নটিতে একটি রয়েছে /
joeyhoer

@ জোয়ে হোয়ের টিপটির জন্য ধন্যবাদ, আমি সেই অনুযায়ী আমার উত্তর আপডেট করেছি।
আদম শার্প

9

চিহ্নবিহীন ফাইলগুলিকে উপেক্ষা করতে কেবল .git / তথ্য / বাদ দিন। বাদ দেওয়া হ'ল একটি ফাইল যা উপেক্ষা করা এক্সটেনশন বা ফাইলগুলির তালিকা সহ।


1
এটি .gitignore (অবশ্যই প্রতিশ্রুতিবদ্ধ হওয়ার পরে) এর মতো সংগ্রহস্থলের অন্যান্য ক্লোনগুলিতে নিয়ে যায় না।
jpmc26

3

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

find . -type f -name *.js | cut -c 3- >> .gitignore

আমি খুঁজে পেয়েছি যে ./শুরুতে কাটা কাটা প্রায়শই গিটকে বুঝতে বোঝায় যে কোন ফাইলগুলি এড়ানো উচিত। অতএব cut -c 3-

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