একাধিক g .gitignore` গুলি ভ্রূণপ্রায়?


239

কোনও রেপো একাধিক স্বতন্ত্র প্রকল্পের সমন্বিত না হলে মনে হয় কেবল .gitignoreরেपोটির মূলের মধ্যে একটি ফাইল জুড়ে বিভিন্ন প্রকারের চেয়ে বেশি সহজ হবে । এটির জন্য কোনও স্ট্যান্ডার্ড সেরা অনুশীলন বা কোনও বিশ্লেষণ অনলাইনে রয়েছে যখন একটি পদ্ধতির অন্যটির চেয়ে ভাল হয়?

উত্তর:


254

আমি কমপক্ষে দুটি অবস্থার কথা ভাবতে পারি যেখানে আপনি .gitignoreবিভিন্ন (উপ) ডিরেক্টরিতে একাধিক ফাইল রাখতে চান ।

  • বিভিন্ন ডিরেক্টরিতে উপেক্ষা করার জন্য বিভিন্ন ধরণের ফাইল রয়েছে। উদাহরণস্বরূপ .gitignore, আপনার প্রকল্পের শীর্ষ ডিরেক্টরিতে উত্পন্ন প্রোগ্রামগুলি উপেক্ষা করে, যখন Documentation/.gitignoreউত্পন্ন ডকুমেন্টেশন উপেক্ষা করে।

  • প্রদত্ত ফাইল উপেক্ষা করুন শুধুমাত্র দেওয়া (SUB) ডিরেক্টরির মধ্যে (আপনি ব্যবহার করতে পারেন /sub/fooমধ্যে .gitignore, যদিও)।

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


1
আহ, কোনও কারণে আমি ভেবেছিলাম / ডকুমেন্টেশন /* এইচটিএমএল এটি কভার করবে তবে আমি অনুমান করি যে * ওয়াইল্ড কার্ড কেবল একটি স্তরের ডিরেক্টরিগুলির সাথে মিলবে।
কনলি

9
@ কনলেওউইনস: আধুনিক গিটের সাহায্যে আপনি ব্যবহার করতে পারেন Documentation/**/*.html(নোটগুলি ন্যায্যভাবে নোঙ্গর করে; /fooসরাসরি ডিরেক্টরিতে ফাইল নোঙ্গর করার জন্য ব্যবহৃত হয়)
জাকুব নরবস্কি

97

স্পর্শকাতর নোট হিসাবে, একাধিক .gitignoreফাইল রাখার ক্ষমতা যেখানে খুব কার্যকর তা হ'ল আপনি যদি নিজের কার্যকরী কপির একটি অতিরিক্ত ডিরেক্টরি চান যা আপনি কখনই প্রতিশ্রুতিবদ্ধ করতে চান না। কেবলমাত্র .gitignoreসেই ডিরেক্টরিতে একটি 1-বাইট (কেবলমাত্র একটি মাত্র নক্ষত্রযুক্ত) রাখুন এবং এটি কখনই প্রদর্শিত হবে না git statusetc.


4
আপনি তার জন্য ".git / তথ্য / বাদ দিন" ফাইলটিও ব্যবহার করতে পারেন
আইয়েল

10
অবশ্যই, আপনি যদি সংগ্রহস্থলটির মূল থেকে দূরে কোনও জায়গায় কোনও ফাইল খোলার মূর্খতা মনে করেন না, তবে এটিতে একটি পুরো পথ লিখুন এবং তারপরে ডিরেক্টরিটি মুছে ফেলা হলে / তারপর প্রবেশটি পরিষ্কার করার কথা মনে রাখবেন। এর সাথে তুলনা করুন printf \* > .gitignore(আপনি ডিরেক্টরি মুছলে ক্লিনআপ স্বয়ংক্রিয় হয়)। আমি নিশ্চিত যে এমন পরিস্থিতি রয়েছে যেখানে .git/info/excludeআরও উপযুক্ত পছন্দ, তবে অনেকগুলি নয়।
অ্যারিস্টটল পাগাল্টজিস

হ্যাঁ, আপনি যখন কোনও ফোল্ডারের পরিবর্তে কোনও ফাইল বাদ দিতে চান উদাহরণস্বরূপ: পি
আইয়েল

4
আমার উত্তরে আমি বলেছিলাম "যদি আপনি নিজের ওয়ার্কিং কপির কোনও অতিরিক্ত ডিরেক্টরি চান তবে আপনি কখনই প্রতিশ্রুতিবদ্ধ হতে চান না" answer
অ্যারিস্টটল পাগাল্টজিস

1
যেহেতু এটি মূলটিতে কম বিশৃঙ্খলা সৃষ্টি করে .gitignore, আমি এই পদ্ধতিকে অনেক পছন্দ করি।
ডেভিড এ গ্রে

59

আপনার .gitignoreনিজস্ব ডিরেক্টরিতে অবশ্যই একাধিক থাকতে পারে ।
পরীক্ষা করার জন্য যা gitignore নিয়ম একটি ফাইল, ব্যবহারের উপেক্ষা জন্য দায়ী git check-ignore: git check-ignore -v -- afile

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

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


নোট করুন যে, গিট 1.8.2 (মার্চ 2013) থেকে আপনি git check-ignore -v -- yourfileকোন গিটিগনোর চালান (কোন .gitignoreফাইল থেকে ) ' yourfile' এ প্রয়োগ করা হয়েছে তা দেখতে আপনি একটি কাজ করতে পারেন এবং কেন ফাইলটি উপেক্ষা করা হয়েছে তা আরও ভালভাবে বুঝতে পারেন।
দেখুন " কোন gitignoreনিয়ম আমার ফাইলটিকে উপেক্ষা করছে? "


17

প্রো একক

  • খোঁজা সহজ.

  • রেপোর বেশ কয়েকটি স্তরে, যদি আমার একাধিক গিটিগনোর থাকে তবে বর্জনীয় বিধি নিষেধাজ্ঞাগুলি শিকার করা বেশ কঠিন।

  • একাধিক ফাইল সহ, আপনি সাধারণত নকল একটি মোটামুটি বিট সঙ্গে আপ আপ।

প্রো একাধিক

  • ফাইল গাছের যে অংশে এটি প্রয়োজন সেখানে যে অংশে "জ্ঞান" স্কোপ করুন।

  • গিট যেহেতু কেবল ফাইলগুলিই ট্র্যাক করে, একটি "খালি" ডিরেক্টরি করার জন্য খালি .gitignore একমাত্র উপায়।

    (এবং গীত 1.8 আগে, একমাত্র উপায় একটি প্যাটার্ন বাদ দেওয়ার মত my/**.exampleতৈরি করতে ছিল my/.gitignoreপ্যাটার্ন দিয়ে **.foo। এই কারণে এখন প্রযোজ্য নয়, যেমন আপনি কি করতে পারেন /my/**/*.example।)


আমি অনেকটা একটি একক ফাইল পছন্দ করি, যেখানে আমি সমস্ত ব্যতিক্রমগুলি খুঁজে পেতে পারি। আমি প্রতি ডিরেক্টরি .svn কখনই মিস করি নি, এবং আমি প্রতি ডিরেক্টরি-ডিরেক্টরি মিস করব না। Gitignore।

বলেছিল, একাধিক গিটিংগোরোর বেশ সাধারণ। আপনি যদি এগুলি ব্যবহার করেন তবে কমপক্ষে তাদের সাথে কাজ করার যুক্তিসঙ্গত করতে তাদের ব্যবহারে সামঞ্জস্য বজায় রাখুন। উদাহরণস্বরূপ, আপনি এগুলি ডিরেক্টরি থেকে একটি স্তর থেকে ডিরেক্টরিতে রেখে দিতে পারেন।


"একটি খালি .gitignore" খালি "ডিরেক্টরি করার একমাত্র উপায়" " প্রকৃতপক্ষে আমি দেখতে পাচ্ছি যে একটি একক README ফাইল (বা emptyসেই বিষয়ে নামকরণ করা একটি ফাইল ) আপলোড করা বেশি সাধারণ।
মার্ক ২৩377

6
.গিটকিপ এটিও করার একটি দুর্দান্ত উপায় ... ঠিক অন্য একটি সম্মেলন। আমি একটি রিডমি ফাইল ব্যবহার করার ধারণাটি পছন্দ করি কারণ আপনি তখন আমাকে পড়তে ফাইলটিতে ডিরেক্টরিটি কী জন্য ব্যবহৃত হয় তা ব্যাখ্যা করতে পারেন।
গ্যাভিন পিকিন

8

অনেক পরিস্থিতিতে যেখানে আপনি আপনার Git রেপো কিন্তু এটা ফাইল ছাড়া একটি ডিরেক্টরি কমিট করতে চান, উদাহরণস্বরূপ logs, cache, uploadsডিরেক্টরি ইত্যাদি

সুতরাং আমি যা করি তা হ'ল .gitignoreনিম্নলিখিত বিষয়বস্তুগুলির সাথে ডিরেক্টরিগুলিতে একটি ফাইল যুক্ত করা :

*
!.gitignore

এই .gitignoreফাইলটির সাথে, গিট সেই ডিরেক্টরিগুলির কোনও ফাইল ট্র্যাক করবে না তবুও আমাকে .gitignoreফাইল যুক্ত করার অনুমতি দেয় এবং সেইজন্য ডিরেক্টরিটি নিজেই রেপোতে যোগ করে।

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