আমি কীভাবে সেগুলিতে বিন্দুবিহীন ফাইলগুলি যুক্ত করব (সমস্ত এক্সটেনশন-কম ফাইলগুলি) গিটিগনোর ফাইলটিতে?


110

শিরোনামের মতো, গিটিগনোর ফাইলটিতে "বিন্দুবিহীন ফাইলগুলি" যুক্ত করা কি সম্ভব?

আমি ভাবছি এটি এই সমস্ত বিরক্তিকর এক্সটেনশনহীন ফাইলগুলির যত্ন নেবে।


2
: কিছু extensionless ফাইল আপনি উপেক্ষা করতে চাই না হয় README, LICENSEবা COPYING, INSTALL, Makefile, ইত্যাদি তাদের যদিও আপনি সবসময় করতে জোর যোগ করতে পারেন এবং তারপর তারা ট্র্যাক করা হয়
Jakub Narębski

@ জাকুবনারাইবস্কি ভাল পয়েন্ট আরও দৃশ্যমানতার জন্য আমি এটিকে আমার উত্তরে অন্তর্ভুক্ত করেছি।
ভনসি

উত্তর:


121

আপনি অনুরূপ একটি সমন্বয় চেষ্টা করতে পারেন:

*
!/**/
!*.*

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

ম্যাড পদার্থবিদ দ্বারা নীচে উল্লিখিত হিসাবে , নিয়মটি হ'ল:

যদি সেই ফাইলটির কোনও পিতামহিত ডিরেক্টরি বাদ দেওয়া হয় তবে কোনও ফাইল পুনরায় অন্তর্ভুক্ত করা সম্ভব নয়। (*)
(*: নির্দিষ্ট শর্তটি যদি গিট ২.২+ এ পূরণ না হয় তবে নীচে দেখুন)

এই কারণেই !/**/যদি আমরা ফাইলগুলি সাদা তালিকাতে রাখতে চান তবে গুরুত্বপূর্ণ (পিতা-মাতা ফোল্ডারগুলি পুনরাবৃত্তভাবে সাদা তালিকাভুক্ত করা) is

আমি একই নিয়মের মতো একই ক্ষেত্রে উল্লেখ করেছি:


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

আমার উপদেশ:

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

ভবিষ্যতের কোনও এক্সটেনশনহীন ফাইলের জন্য যা আপনি সংস্করণ করতে চান:

git add -f -- myFile

নোট করুন যে গিট 2.9.x / 2.10 (২০১10 এর মাঝামাঝি?) দিয়ে এই ফাইলটির পিতামহিত ডিরেক্টরিকে আবার অন্তর্ভুক্ত করে যদি কোনও ওয়াইল্ডকার্ড না থাকে তবে কোনও ফাইল পুনরায় অন্তর্ভুক্ত করা সম্ভব হতে পারে ।

Nguyễn Thái Ngọc Duy ( pclouds) এই বৈশিষ্ট্যটি যুক্ত করার চেষ্টা করছেন:

তবে, যেহেতু পুনরায় অন্তর্ভুক্ত করার একটি নিয়ম ছিল:

পুনরায় অন্তর্ভুক্ত নিয়মের ডিরেক্টরি অংশটি অবশ্যই আক্ষরিক হতে হবে (অর্থাত কোনও ওয়াইল্ডকার্ড নয়)

এটি যেভাবে এখানে কাজ করবে না।


1
উত্তর সম্পূর্ণ সঠিক। তবে সম্ভবত আরও ভাল .gitignoreহবে **এবং !**.*। আমি জানি যে যদি তারকাচিহ্নটি সামনে স্থাপন করা হয় তবে এটি কোনও তাত্পর্যপূর্ণ হবে না, তবে শেলগুলি কীভাবে ওয়াইল্ডকার্ডগুলি পরিচালনা করে তা আরও স্পষ্ট এবং
সুরে

7
দ্রষ্টব্য: অন্যান্য বর্জনীয় বিধিগুলির সাথে কাজ করতে, এটি আপনার .gitignore ফাইলটিতে নিয়মের প্রথম সেট হতে হবে
এরিক

এছাড়াও আপনি পুনঃঅন্তর্ভুক্ত করুন করতে পারেন নির্দিষ্ট extensionless ফাইলগুলির সাথে যেমন !Makefile। 1.9.0 এ সূক্ষ্মভাবে কাজ করার সময় আমি গিট 1.7.1 এ এই সমস্যাটি নিয়ে সমস্যার মুখোমুখি হয়েছি। আমার ক্ষেত্রে মূল ডিরেক্টরিতে একটি ফাইল যুক্ত করা ভাল কাজ করেছে, তবে উপ-ডিরেক্টরিতে একটি এক্সটেনশন সহ একটি ফাইল যুক্ত করা উপেক্ষা হিসাবে দেখানো হয়েছিল। এটি বলে মনে হয় কারণ 1.7.1 **এখনও প্যাটার্ন সমর্থন করে নি, দেখুন এখানে !
mxmlnkn

1
**গীত মধ্যে যোগ করা হয়েছিল 1.8.2!*/পরিবর্তে ব্যবহার করে কোনও অসুবিধা আছে !/**/?
mxmlnkn

@ টামাএমসিগ্লিন যেটি দেখতে একটি রেইজেক্সের মতো দেখাচ্ছে: গিটিগনোর রেজেক্সগুলিকে সমর্থন করে না।
ভোনসি

50
*
!*/
!*.*

* গিটকে সবকিছু উপেক্ষা করতে বলে।

!*/তারপরে ডিরেক্টরিতে থাকা যেকোন কিছুতে আনইনগোর করে। এটি অত্যন্ত গুরুত্বপূর্ণ।

!*.* একটি এক্সটেনশন দিয়ে সমস্ত ফাইল আনইনগার করে।

!*/নিয়ম ব্যতীত .নামের সাথে ডিরেক্টরিগুলি তালিকাভুক্ত হবে না এবং আপনার পছন্দসই ফাইলগুলির মধ্যে কোনও মূল ফোল্ডারের বাইরে যুক্ত করা যাবে না।

রেফারেন্সের জন্য .gitignore ডকুমেন্টেশনের এই দুটি বিভাগটি পড়ুন :

একটি alচ্ছিক উপসর্গ "!" যা প্যাটার্ন অবহেলা করে; আগের প্যাটার্ন দ্বারা বাদ দেওয়া কোনও মিলে যাওয়া ফাইল আবার অন্তর্ভুক্ত হবে। যদি সেই ফাইলটির কোনও পিতামাতাকে বাদ দেওয়া হয় তবে কোনও ফাইল পুনরায় অন্তর্ভুক্ত করা সম্ভব নয়। কার্য সম্পাদনের কারণে গিট বাদ দেওয়া ডিরেক্টরিগুলি তালিকাভুক্ত করে না, সুতরাং এতে থাকা ফাইলগুলিতে যে কোনও প্যাটার্নের কোনও প্রভাব নেই, সেগুলি নির্ধারিত যেখানেই হোক না কেন। প্রথম "এর সামনে একটি ব্যাকস্ল্যাশ (" \ ") রাখুন!" আক্ষরিক "!" দিয়ে শুরু হওয়া নিদর্শনগুলির জন্য, উদাহরণস্বরূপ, "! গুরুত্বপূর্ণ! .txt"।

যদি প্যাটার্নটি স্ল্যাশের সাথে শেষ হয় তবে এটি নীচের বর্ণনার উদ্দেশ্যে সরিয়ে ফেলা হবে তবে এটি কেবল একটি ডিরেক্টরিতে একটি মিল খুঁজে পাবে। অন্য কথায়, foo / এর নীচে একটি ডিরেক্টরি foo এবং পাথের সাথে মেলে তবে কোনও নিয়মিত ফাইল বা প্রতীকী লিংক ফুটির সাথে এটি মেলে না (গিটে প্যাথস্পেক কীভাবে সাধারণভাবে কাজ করে তার সাথে এটি সামঞ্জস্যপূর্ণ)।


1
ভালো বল ধরা. +1 টি। আমি সম্প্রতি আমার খনিগুলির উত্তরগুলিতে ব্যবহার করেছিলাম সেই নিয়মটি দিয়ে আমার উত্তরটি আপডেট করতে ভুলে গিয়েছিলাম। আমি আমার উত্তর অনুসারে আপডেট করেছি।
ভনসি

0

আমার ফোল্ডারে *.c, *.h, *.txt, *.csvইত্যাদির সাথে প্রচুর ফাইল রয়েছে এক্সটেনশন এবং বাইনারি ফাইলগুলি কোনও প্রকার ছাড়াই। সুতরাং আমাকে সমস্ত ফাইল নির্বাহকারী *.c,*.hএবং উপেক্ষা করা দরকার .gitignore, .gitignoreউদাহরণস্বরূপ , এটি আমার পক্ষে কাজ করে :

 */*         #ignore all files in each directory
 !*/*.c      #unignore .c files in each directory
 !*/*.h      #unignore .h header files in each directory
 !.gitignore #unignore .gitignore
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.