आप फ़ाइलों को बाहर करने के लिए .ignignore के बजाय .गित / जानकारी / बहिष्कृत का उपयोग कब करेंगे?


144

मैं उपयोग करने के लिए .git/info/excludeऔर .gitignoreफ़ाइलों को बाहर करने के पेशेवरों और विपक्षों के बारे में थोड़ा भ्रमित हूं ।

वे दोनों भंडार / परियोजना के स्तर पर हैं, इसलिए वे कैसे भिन्न हैं और हमें कब उपयोग करना चाहिए .git/info/exclude?

जवाबों:


196

इसका फायदा .gitignoreयह है कि इसके विपरीत, रिपॉजिटरी में ही इसे जांचा जा सकता है .git/info/exclude। एक और लाभ यह है कि आपके पास कई .gitignoreफाइलें हो सकती हैं , प्रत्येक निर्देशिका के अंदर एक / निर्देशिका के लिए उपनिर्देशिका विशिष्ट अनदेखी नियमों के विपरीत .git/info/exclude

तो, .gitignoreरिपॉजिटरी के सभी क्लोनों में उपलब्ध है। इसलिए, बड़ी टीमों के सभी लोगों फ़ाइलों उदाहरण उसी तरह की अनदेखी कर रहे हैं *.db, *.log। और आप कई की वजह से अधिक विशिष्ट उपेक्षा नियमों हो सकता है .gitignore

.git/info/excludeकेवल व्यक्तिगत क्लोन के लिए उपलब्ध है, इसलिए एक व्यक्ति अपने क्लोन में जो अनदेखी करता है वह किसी अन्य व्यक्ति के क्लोन में उपलब्ध नहीं है। उदाहरण के लिए, यदि कोई Eclipseविकास के लिए उपयोग करता है तो यह उस डेवलपर के लिए .buildफ़ोल्डर जोड़ने के लिए समझ में आता है .git/info/excludeक्योंकि अन्य देवता ग्रहण का उपयोग नहीं कर सकते हैं।

सामान्य तौर पर, जिन फ़ाइलों / नियमों को अनदेखा किया जाना है .gitignore, उन्हें अनदेखा करना चाहिए , और अन्यथा उन फ़ाइलों को जिन्हें आप केवल अपने स्थानीय क्लोन पर अनदेखा करना चाहते हैं, में जाना चाहिए.git/info/exclude


लेकिन वह आदर्श रूप से ~ / .ignignore
Devendra Swami

@ देवेंद्रस्वामी मुझे नहीं मिला कि ~/.gitignoreआपकी टिप्पणी में किस विशिष्ट प्रविष्टि को जाना चाहिए । मेरी समझ यह है कि नियमों को अनदेखा करना 3 स्तरों पर हो सकता है - $PROJECT/.git/info/exclude(प्रोजेक्ट, उपयोगकर्ता) विशिष्ट अनदेखी नियमों के लिए, $PROJECT/<any number of directories>/.gitignoreजो कि किसी भी उपयोगकर्ता के लिए कहीं भी (जब जांच की जाती है) में ~/.gitignore विशिष्ट विशेषण नियमों के लिए है, तो उपयोगकर्ता के लिए किसी भी परियोजना के लिए विशिष्ट नियमों की अनदेखी करें। उस मशीन पर। उद्देश्य के आधार पर, आप प्रवेश करने के लिए जगह चुनते हैं।
mu

हाँ, आप बिलकुल सही हैं। मेरी टिप्पणी इस सवाल से संबंधित थी stackoverflow.com/questions/59673991/…
देवेन्द्र स्वामी

मैं मूल अधूरी टिप्पणी के लिए माफी माँगता हूँ।
देवेन्द्र स्वामी

2
@ShmymyWeitzhandler, क्या स्लोन फ़ाइल पहले से ही आपके रेपो में है? फिर बहिष्कृत या .ignore परिवर्तन को ट्रैक करने से रोक नहीं पाएगा। निम्न में से कोई एक प्रयास करें: git rm --cached <path-name>इसे रिपॉजिटरी से हटा देगा, लेकिन इसे स्थानीय रूप से रखें। git update-index --skip-worktree <path-name>फ़ाइल में परिवर्तनों को अनदेखा करेगा, लेकिन उसे भंडार में रखेगा। जिज्ञासा से बाहर: आप स्लन-फाइल को बाहर क्यों रखना चाहते हैं? यह .Net समाधान सही का एक महत्वपूर्ण हिस्सा है?
कोएन

36

Googled: फ़ाइलों को बाहर करने के 3 तरीके

  1. .gitignore इस रिपॉजिटरी के हर क्लोन पर लागू होता है (संस्करण, हर किसी के पास होगा),
  2. .git/info/exclude केवल इस भंडार की स्थानीय प्रति (स्थानीय, दूसरों के साथ साझा नहीं) पर लागू होती है,
  3. ~/.gitignore आपके कंप्यूटर पर सभी रिपॉजिटरी पर लागू होता है (स्थानीय, दूसरों के साथ साझा नहीं)।

3. वास्तव में आपके कंप्यूटर पर एक कॉन्फ़िगरेशन सेट करने की आवश्यकता है:

git config --global core.excludesfile '~/.gitignore'

2
हाँ, मैंने भी पढ़ा है, लेकिन एक और अधिक व्यावहारिक (वास्तविक दुनिया) परिप्रेक्ष्य प्राप्त करना चाहता था :-)
पराग

लिंक किए गए ब्लॉग गलती से फ़ाइल को कॉल करता है .git/info/excludes, जब यह होना चाहिए .git/info/exclude, जैसा कि इसके द्वारा लिंक किए गए दस्तावेज़ द्वारा पुष्टि की गई है।
mwfearnley

13
(स्पॉइलर: तीसरा तरीका कंप्यूटर / ग्लोबल सेटिंग में ~ / .itconfig के माध्यम से नजरअंदाज
करता है

@ विलेज: धन्यवाद, मैंने आपकी टिप्पणी को इस उत्तर में शामिल किया
LeGEC

12

बस हमारे (वास्तविक दुनिया) अनुभव की पेशकश करने के लिए: हमने उपयोग करना शुरू कर दिया है। हम / जानकारी / बाहर कर रहे हैं जब हमें प्रत्येक विकास के वातावरण पर कुछ कॉन्फिग फाइलों को अनुकूलित करना था, लेकिन फिर भी स्रोत को रेपो में बनाए रखा जाना चाहिए और अन्य डेवलपर्स के लिए उपलब्ध होना चाहिए।

इस तरह, स्थानीय फ़ाइलों को एक बार क्लोन और संशोधित करने के बाद रेपो में मूल फ़ाइलों को प्रभावित किए बिना कमिट्स से बाहर रखा जा सकता है, लेकिन आवश्यक रूप से रेपो में अनदेखा किए बिना।


4

प्रोजेक्ट के.gitignore लिए विशिष्ट नियमों को अनदेखा करने के लिए उपयोग करें । नियमों को अनदेखा करने के लिए एक वैश्विक अनदेखा फ़ाइल का उपयोग करें या जो आपके पर्यावरण के लिए विशिष्ट हो ।exclude

उदाहरण के लिए, मेरी ग्लोबल इग्नोर फाइल्स, जो भी मैं संपादक का उपयोग कर रहा हूं, उसके द्वारा उत्पन्न अस्थायी फाइलों को नजरअंदाज कर देता है - यह नियम मेरे पर्यावरण के लिए विशिष्ट है, और एक ही प्रोजेक्ट पर कुछ अन्य डेवलपर के लिए अलग हो सकता है (शायद वे एक अलग संपादक का उपयोग करते हैं)। ओटीओएच, मेरी परियोजना .gitignoreफाइलें एपीआई कीज जैसी चीजों को नजरअंदाज करती हैं और कलाकृतियों का निर्माण करती हैं - जो परियोजना के लिए हैं , और परियोजना पर सभी के लिए समान होनी चाहिए।

क्या उससे मदद हुई?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.