আমি কীভাবে গিটকে একটি উপ-ডিরেক্টরি বাদ দিয়ে সবকিছু উপেক্ষা করতে বলব?


218

আমি আমার সংগ্রহস্থলের সমস্ত ফাইল binউপ - ডিরেক্টরিতে উপস্থিত ফাইলগুলি বাদ দিয়ে উপেক্ষা করতে চাই । আমি আমার সাথে নিম্নলিখিতগুলি যুক্ত করার চেষ্টা করেছি .gitignore:

*
!bin/*

এটির কাঙ্ক্ষিত প্রভাব নেই তবে: আমি ভিতরে একটি নতুন ফাইল তৈরি করেছি bin/, তবে git statusএখনও দেখায় nothing to commit (working directory clean)

কোনও পরামর্শ?


উত্তর:


273

এটি রুট ফাইল এবং রুট ডিরেক্টরিগুলি উপেক্ষা করে, তারপরে রুট বিন ডিরেক্টরিটিকে উপেক্ষা করবে:

/*
/*/
!/bin/

এভাবে আপনি উপ ডিরেক্টরি এবং তাদের ফাইলগুলি সহ সমস্ত বিন ডিরেক্টরিটি পাবেন।


25
কিছু কারণে এটি আমার জন্য ধারাবাহিকভাবে কাজ করে না। আমার দুটি লাইন রয়েছে /stuff/এবং !/stuff/specific/তবে এটি এখনও / স্টাফ / নির্দিষ্ট /
LB--

1
@ LB-- আমি একটি অনুরূপ সমস্যা ছিল, এবং git check-ignore -vআমাকে বলেছিলেন কারণ ছিল~/.gitignore
গার্নি অ্যালেক্স

@ গুর্নিয়েলেক্স আমি জানতে পেরেছি যে আমি যদি স্থানীয় রেপো মুছে ফেলি এবং এটি পুনরায় ক্লোন করি তবে এটি অবশ্যই একটি বাগ হবে।
এলবি--

2
/ * / প্রয়োজনীয়?
অ্যালেক্স বেকার

3
এটি আমার পক্ষে কাজ করে না। আমাকে !/bin/আমার মূল .gitignoreফাইলটিতে যুক্ত করতে হয়েছিল , তবে তারপরে আমাকে আরও একটি /bin/.gitignoreফাইল যুক্ত করতে হয়েছিল !*... এই পরিবর্তনগুলির মধ্যে কেবল একটি তৈরি করা কার্যকর হয়নি। এটি কেবলমাত্র উভয় পরিবর্তনের সংমিশ্রনের পরে কাজ করেছিল।
ফিলিপ ব্রহ্ম

113

এখানে কিছু ডিরেক্টরিতে কীভাবে একটি ডিরেক্টরি " MY_SUPER_DUPER_TEMPLATE_ ডিরেক্টরি" উপস্থাপন করা যায় তা উপেক্ষা করবেন

কাঠামো: / বিট্রিক্স / টেমপ্লেটস / এমওয়াইএসইউপিইউপিডিউপিডিউপিডি_পিএলপিএল_এল 2011 ডিরেক্টরি

/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore

1
আমি পরিবর্তিত একটি ল্যারাভেল বিক্রেতার প্যাকেজটি আনজিওনার করার জন্য এটি আশ্চর্য কাজ করে! আপনাকে ধন্যবাদ, আপনি আমাকে প্রচুর মাথাব্যাথা বাঁচিয়েছেন
মারিয়া ভিলারি

এটি সেরা উত্তর হিসাবে নির্বাচন করা উচিত।
বাহমান.এ

63

গন্তব্যগুলির পথে আপনাকে অবশ্যই সমস্ত কিছু বাদ দিতে হবে তবে আপনাকে অবশ্যই গন্তব্যগুলি অন্তর্ভুক্ত করতে হবে:

দ্রষ্টব্য: এটি একটি বর্জনকারী ফাইল (যেমন .gitignore) তাই যুক্তিটি উল্টে যায়। টিএসপি ডিরেক্টরি বাদে সকলকে উপেক্ষা করুন, এসসিআর ডিরেক্টরি বাদে সমস্ত টিএসপি ডিরেক্টরিতে উপেক্ষা করুন ...

/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore

11
কোনও ডিরেক্টরি অন্তর্ভুক্ত করার নীতির জন্য +1, তারপরে, এর বিষয়বস্তুগুলি বাদ দিয়ে, তারপরে কাঙ্ক্ষিত উপ-ডিরেক্টরি সহ, ইত্যাদি I আমি আমার প্রকল্পগুলিতে এই উত্তরটি ব্যবহার করে শেষ করেছি।
জন যীশু

40

আপনার কাছে কেবলমাত্র সমস্যাটি হ'ল binডিরেক্টরিটি নিজেই bin/*প্যাটার্নের সাথে মেলে না তাই গিট এমনকি binডিরেক্টরিতেও না দেখায় ।

দুটি সমাধান রয়েছে যা মনে মনে বসন্ত।

.gitignore :

*
!/bin/
!bin/*

অথবা

.gitignore :

*
!/bin/

bin/.gitignore :

!*

আমি দ্বিতীয় সমাধানটি পছন্দ করি কারণ প্রথম সমাধানটি ফাইলগুলিকে উপেক্ষা করা বন্ধ করে না bin ডাইরেক্টরিতে ডিরেক্টরিগুলিতে থাকা না যা বলা হয় না bin। এটি আপনার পরিস্থিতিতে গুরুত্বপূর্ণ হতে পারে বা নাও পারে।


2
আমার পক্ষে কাজ করেনি। এটির কাজটি করার জন্য আমার কাছে এইভাবে একটি .gitignore থাকতে হবে: # Ignore everything * # But not these files... !/wp-content/ !/wp-content/plugins/ !/wp-content/plugins/my_plugin/ !/wp-content/plugins/my_plugin/* মন্তব্যগুলিতে কোনও ব্লক কোড নেই?
xlttj

1
টাইলারের উত্তরের আরও একক ফাইল সমাধান রয়েছে
ইয়ারিন

19

অফিসিয়াল গিট ডক থেকে উদাহরণগুলির মধ্যে একটি বলে:

নির্দিষ্ট ডিরেক্টরি foo / বার ব্যতীত সমস্ত কিছু বাদ দেওয়ার উদাহরণ (/ * নোট করুন - স্ল্যাশ ব্যতীত, ওয়াইল্ডকার্ড foo / বারের মধ্যে সমস্ত কিছু বাদ দেবে):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

শীর্ষস্থানীয় স্ল্যাশ সম্পর্কে ব্যাখ্যার জন্য: কখন গিটিগনরে শীর্ষস্থানীয় স্ল্যাশ ব্যবহার করবেন


আপনাকে এক মিলিয়ন ধন্যবাদ, এটি আমার পক্ষে কাজ করেছে! অন্যদের জন্য নোট করুন যে এখানে রেখার ক্রমটি গুরুত্বপূর্ণ, উদাহরণস্বরূপ আপনি / foo / * এর আগে / foo / বার রাখতে পারবেন না।
Iamsodarncool

13

সর্বশেষ জিআইটি সংস্করণে অনুসরণ করার চেষ্টা করুন।

*
!*/
!/path/to/your/dir/**

এটি আসলে হওয়া উচিত! / লাইন / আপনার / দির / ** শেষ লাইনের জন্য
ফাহাম

@ ফাহাম, হ্যাঁ, এটি কেবল যুক্ত করুন।
কারবি

11

আমি মনে করি একটি স্ল্যাশ দিয়ে প্যাটার্নটি শুরু করে শীর্ষ গিট ডিরেক্টরিতে প্রতিটি প্যাটার্নটি অ্যাঙ্কর করা ভাল উপায়:

/*
!/public_html
!/.gitignore

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



5

এই অস্পষ্ট গিট বাগটি ব্যবহার করে দেখুন

!bin**/**

আশা করি এটা সাহায্য করবে :)

সহায়ক ডক্স গিট বাগের নমুনা

পিএস: মন্তব্য করার আগে প্রথমে চেষ্টা করুন।


0

আমাকে সম্প্রতি এটি করতে হয়েছিল:

*
!sub-dir/
!sub-dir/*

আমি নিশ্চিত না কেন আমার কেন একটি ফোল্ডার বাদ দেওয়ার জন্য দুটি লাইনের প্রয়োজন, তবে এটি আমার এবং ম্যাকোসের জন্য কাজ করেছিল।

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