কোনও ডিরেক্টরিতে কোনও ধরণের সমস্ত ফাইল উপেক্ষা করার উপায় কি আছে?
** স্পষ্টতই গিটার অর্থহীন, সুতরাং এটি কাজ করে না:
/public/static/**/*.js
ধারণাটি নির্বিচারে নেস্টেড ফোল্ডারগুলির সাথে মেলে।
কোনও ডিরেক্টরিতে কোনও ধরণের সমস্ত ফাইল উপেক্ষা করার উপায় কি আছে?
** স্পষ্টতই গিটার অর্থহীন, সুতরাং এটি কাজ করে না:
/public/static/**/*.js
ধারণাটি নির্বিচারে নেস্টেড ফোল্ডারগুলির সাথে মেলে।
উত্তর:
কখনও এটা চেষ্টা করেছি, কিন্তু git help ignoreদাড়ায় যে আপনি একটি করা .gitignoreসঙ্গে *.jsমধ্যে /public/static, এটা কি আপনি চান করতে হবে।
দ্রষ্টব্য: নীচে জয়েসের উত্তরটিও পরীক্ষা করে দেখুন: আপনি যদি একটি নির্দিষ্ট সাব-ডিরেক্টরিতে ফাইলগুলি উপেক্ষা করতে চান তবে স্থানীয় .gitignore সঠিক সমাধান (লোকেশন ভাল)। তবে আপনার পুরো রেপোতে যদি একই প্যাটার্ন প্রয়োগ করতে হয় তবে ** সমাধানটি আরও ভাল is
এটি প্রদর্শিত হবে যে **সিনট্যাক্সটি ডকুমেন্টেশন অনুসারে 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" এবং আরও অনেক কিছু।অন্যান্য পর পরের অস্ট্রেলিকগুলি অবৈধ বলে বিবেচিত হয়।
xxx/**এবং মধ্যে পার্থক্য কি xxx/?
xxx/**এর মধ্যে থাকা সমস্ত ফাইল এবং ডিরেক্টরিকে লক্ষ্য করে xxxযেখানে সরাসরি ডিরেক্টরিকে xxx/লক্ষ্য করে xxx। প্রকৃতপক্ষে কেবল তখনই বিষয়গুলি অবলম্বন করে যখন !"সেই ফাইলের পিতামহিত ডিরেক্টরি বাদ দিলে কোনও ফাইল পুনরায় অন্তর্ভুক্ত করা সম্ভব নয় as", সুতরাং সেই ক্ষেত্রে ব্যবহার xxx/*বা xxx/**প্রয়োজনীয় হবে।
**.js?
আপডেট: @ জয়ের উত্তরটি একবার দেখুন : গিট এখন **নিদর্শনগুলিতে সিনট্যাক্স সমর্থন করে। উভয় পন্থা সূক্ষ্মভাবে কাজ করা উচিত।
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ডিরেক্টরি এবং এর উপ-ডিরেক্টরিগুলির ফাইলগুলিতে প্রয়োগ করা হবে ।
/পারেন কাজ করবে না, মত পাথ মিলে public/static/foo.jsএবং foo/public/static/bar.js।" মিথ্যা ডকুমেন্টেশনটির উদ্ধৃতি দিতে "যদি প্যাটার্নটিতে স্ল্যাশ থাকে না /, গিট এটি শেল গ্লোব প্যাটার্ন হিসাবে বিবেচনা করে এবং .gitignore ফাইলের অবস্থানের সাথে সম্পর্কিত নামের সাথে মিলের জন্য পরীক্ষা করে (কাজের গাছের উপরের স্তরের সাথে সম্পর্কিত যদি .gitignore ফাইল থেকে নয়)। foo/public/static/bar.jsমেলে না কারণ প্যাটার্নটিতে একটি রয়েছে /।
চিহ্নবিহীন ফাইলগুলিকে উপেক্ষা করতে কেবল .git / তথ্য / বাদ দিন। বাদ দেওয়া হ'ল একটি ফাইল যা উপেক্ষা করা এক্সটেনশন বা ফাইলগুলির তালিকা সহ।
আমি বিশ্বাস করি এর সহজ সমাধানটি ব্যবহার করা হবে find। আমি .gitignoreউপ ডিরেক্টরিতে একাধিক ঝুলন্ত পছন্দ করি না এবং আমি একটি অনন্য, শীর্ষ-স্তর পরিচালনা করতে পছন্দ করি .gitignore। এটি করার জন্য আপনি কেবলমাত্র পাওয়া ফাইলগুলিকে নিজেরটিতে সংযুক্ত করতে পারেন .gitignore। মনে করুন /public/static/এটি আপনার প্রকল্প / গিট হোম আমি এই জাতীয় কিছু ব্যবহার করব:
find . -type f -name *.js | cut -c 3- >> .gitignore
আমি খুঁজে পেয়েছি যে ./শুরুতে কাটা কাটা প্রায়শই গিটকে বুঝতে বোঝায় যে কোন ফাইলগুলি এড়ানো উচিত। অতএব cut -c 3-।