গিটকে শ্বেত তালিকা এবং সাব-ডিরেক্টরিগুলি ories


92

আমি কেবল পাঠ্য ফাইলের জন্য একটি সাদা তালিকা তৈরি করেছি।

*
!*.txt

এখন, আমার কাছে একটি সাব-ডিরেক্টরিতে একটি ট্রেড করা ফাইল রয়েছে - sub/dir/file.txtএবং এটি প্রদর্শিত হবে না (এটি উপেক্ষা করা হবে)। মূল ডিরেক্টরিতে পাঠ্য ফাইলগুলি প্রদর্শিত হয়।

এটি কেন এবং আমি কীভাবে এটি ঠিক করব?


4
সংশ্লিষ্ট: stackoverflow.com/q/987142/78845
Johnsyweb

আপনি যে ফাইলগুলি একটি সাব ডিরেক্টরিতে অন্তর্ভুক্ত করতে চান তা কি? যদি তা হয় তবে এই সাব ডিরেক্টরিটি আপনার প্রথম তারকা ইতিমধ্যে উপেক্ষা করা হতে পারে .gitignore
ফজরান

হ্যাঁ. এই উদাহরণগুলি আমার উদাহরণের 11.1.102.55 ফোল্ডারের মতো ডিরেক্টরি কাঠামোর চেয়ে কম হবে। বাসা সবসময় ফোল্ডার / পণ্যগুলির মধ্যে এক রকম হয় না।
নট

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

4
আমি দেখতে পাচ্ছি না এটি কীভাবে নকল। অন্য প্রশ্নটি নির্দিষ্ট ফাইলগুলিকে কীভাবে শ্বেত তালিকাভুক্ত করা যায় তা জিজ্ঞাসা করে, যখন এইটি সাবফোল্ডারগুলি সহ নির্দিষ্ট ফাইলের ধরণের হোয়াইটলিস্ট করতে হয় তা জিজ্ঞাসা করে। আসলে, এটি আরো একটি সদৃশ মত হল stackoverflow.com/questions/8024924/...
বড় ম্যাকলার্জহিউজ

উত্তর:


147

আপনি যদি সেভাবে চেষ্টা করে থাকেন তবে এটি ব্যর্থ হবে, কারণ আপনি আপনার কাঠামোর ডিরেক্টরিগুলি কালো তালিকাভুক্ত করবেন।

সমাধানের জন্য, আপনি কালোতালিকা সবকিছু যে একটি ডিরেক্টরি নয়, এবং ফাইল-যে ধরনের কমিট করতে চান এক হয় না, করতে চান যখন ডিরেক্টরি কালোতালিকাভুক্ত না

.gitignoreযে ফাইলটি করব:

# First, ignore everything
*
# Now, whitelist anything that's a directory
!*/
# And all the file types you're interested in.
!*.one
!*.two
!*.etc

.txtউপস্থিতির জন্য ফাইলগুলির জন্য একটি তিন-স্তরের কাঠামো সাদা তালিকাতে এটি পরীক্ষা করা হয়েছে *.one, *.twoএবং সংগ্রহস্থলের মূল ডিরেক্টরিতে থাকা *.threeফাইলগুলি ব্যবহার করে .gitignore- আমার জন্য কাজ করে। .gitignoreআপনার কাঠামোর সমস্ত ডিরেক্টরিতে আপনাকে ফাইল যুক্ত করতে হবে না ।

তথ্য আমি উত্তর থেকে এসে চিত্রে ব্যবহার করা অন্যান্য বিষয়ের মধ্যে, এই (stackoverflow.com)।


18
আপনারও এন্ট্রি দরকার !.gitignore, ব্যবহার করার সময় *, না?
sjas

4
আমার উত্তরটি এখানে দেখুন: stackoverflow.com/questions/987142/…/* কেবলমাত্র শীর্ষ-স্তরের ফোল্ডারটিকে কালো তালিকাভুক্ত করার জন্য আরও দরকারী হতে পারে তবে সমস্ত ফোল্ডার পুনরাবৃত্তভাবে নয়, যার অর্থ হ'ল .gitignoreকোনও শ্বেত তালিকাভুক্ত ফোল্ডারের সাবফোল্ডারগুলিতে সন্ধান করা উচিত নয়।
রায়ান টেইলর

3

এটি অর্জনের একটি সহজ উপায় হ'ল:

# Ignore all files...
*.*

# ...except the ones we want
!*.txt

এটি কাজ করে কারণ gitignoreএমন নিদর্শনগুলি প্রয়োগ করে যা ফাইলের /নীচে প্রতিটি স্তরের সাথে শুরু হয় না .gitignore:

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

আপনি যদি কোনও ডিরেক্টরিতে থাকা ফাইলগুলিতে এটি করতে চেয়েছিলেন তবে জিনিসগুলি আরও জটিল হয়ে উঠবে:

# Ignore all files in all directories inside subdir...
/subdir/**/*.*

# ...except the ones we want
!/subdir/**/*.txt

এটি কাজ করে কারণ gitignoreএর জন্য বিশেষ বিধি রয়েছে **:

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

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

মূল অংশটি হ'ল আপনি ডিরেক্টরিগুলি উপেক্ষা করবেন না তা নিশ্চিত করা, কারণ তারপরে ডিরেক্টরিটির অন্য ফাইলগুলি অন্য নিয়ম নির্বিশেষে উপেক্ষা করা হবে।


0

আমি দীর্ঘ সময় অনুসন্ধান করেছি:

  1. ধরুন আমার কাছে large 100.000 ডিরেক্টরিগুলি পুনরাবৃত্তভাবে নেস্টেড সহ একটি বড় ফোল্ডার কাঠামো রয়েছে। এই ফোল্ডারে, প্রায় 30.000 ফাইল টাইপ রয়েছে .txt(আমার ক্ষেত্রে: টাইপ *.md)। এই *.mdফাইলগুলির পাশে, সেখানে বলা যাক, 500 গিগাবাইট (এক মিলিয়ন +) ফাইল যা আমি ট্র্যাক করতে চাই না।

  2. আমি সমস্ত ফোল্ডার এবং সাবডিয়ারগুলিতে কেবল .txt(বা *.md) ফাইলগুলি ট্র্যাক করতে চাই it

সঠিক উত্তরটি হওয়া উচিত: গিটে এটি সম্ভব নয়।

পরিবর্তে আমি যা করেছি:

[সম্পাদনা: এগুলিও কার্যকর হয়নি - আমি সিমলিংকগুলি (বা হার্ডলিঙ্কগুলি) দিয়ে একটি ফোল্ডার তৈরি করার চেষ্টা করেছি এবং সেখানে গিট ব্যবহার করেছি, তবে গিটটি প্রতীকগুলি অনুসরণ করে না এবং হার্ডলিঙ্কগুলি ওভাররাইট করে। দোহ!]

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