क्या आपको Git repos में .gitignore करना चाहिए?


496

क्या आपको लगता है कि यह एक अच्छा अभ्यास है। एक Git रेपो में .ignignore?

कुछ लोगों को यह पसंद नहीं है, लेकिन मुझे लगता है कि यह अच्छा है क्योंकि आप फ़ाइल के इतिहास को ट्रैक कर सकते हैं। है ना?


38
यदि आप ऐसा नहीं करते हैं, तो
.itignore को .gitignore

जवाबों:


488

आम तौर पर हाँ, .gitignoreउन सभी के लिए उपयोगी है जो भंडार के साथ काम करना चाहते हैं। इस अवसर पर आप और अधिक निजी चीज़ों को अनदेखा करना चाहेंगे (हो सकता है कि आप अक्सर बनाते हैं LOGया कुछ और करते हैं। उन मामलों में आप शायद किसी और पर मजबूर नहीं करना चाहते हैं।


137
+1 "निजी चीजों" का उल्लेख $GIT_DIR/info/excludeया ~/.gitconfigफाइलों में उचित रूप में किया जा सकता है।
WReach

5
यदि आपके पास पहले से कोई फ़ाइल है, और आप इसे अनदेखा करना चाहते हैं, तो यदि आप एक नियम जोड़ते हैं तो Git फ़ाइल को अनदेखा नहीं करेगा। उन मामलों में, आपको अपने टर्मिनल में निम्नलिखित कमांड चलाकर पहले फ़ाइल को अनट्रैक करना होगा:git rm --cached FILENAME
eli-bd

133

आप आमतौर पर कमिट करते हैं .gitignore। वास्तव में, मैं व्यक्तिगत रूप से यह सुनिश्चित करता हूं कि जब मैं किसी चीज पर काम नहीं कर रहा हूं तो मेरा सूचकांक हमेशा साफ रहे। (git status कुछ नहीं दिखाना चाहिए।)

ऐसे मामले हैं जहां आप सामान को अनदेखा करना चाहते हैं जो वास्तव में विशिष्ट नहीं है। उदाहरण के लिए, आपका पाठ संपादक स्वचालित *~बैकअप फ़ाइलें बना सकता है , या कोई अन्य उदाहरण होगा.DS_Store OS X द्वारा बनाई गई फ़ाइलें

मैं कहूंगा, यदि अन्य उन नियमों के बारे में शिकायत कर रहे हैं जो आपके नियम को अव्यवस्थित कर रहे हैं .gitignore , तो उन्हें छोड़ दें और इसके बजाय उन्हें एक वैश्विक बहिष्कृत फ़ाइल में डाल दें।

डिफ़ॉल्ट रूप से यह फ़ाइल अंदर रहती है $XDG_CONFIG_HOME/git/ignore (डिफॉल्ट्स ~/.config/git/ignore) , लेकिन core.excludesfileविकल्प सेट करके इस स्थान को बदला जा सकता है। उदाहरण के लिए:

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

बस अपने दिल की सामग्री के लिए वैश्विक बहिष्करण बनाएं और संपादित करें; यह उस मशीन पर आपके द्वारा काम करने वाले हर गिट रिपॉजिटरी पर लागू होगा।


14
आप हमेशा यह समझाने के # some commentलिए .gitignoreफ़ाइल में रेखाएँ जोड़ सकते हैं कि आप कुछ क्यों अनदेखा कर रहे हैं। हर पंक्ति टिप्पणी करते overkill का एक सा है, लेकिन मैं वर्गों करार दिया है है # IDE (Eclipse), # OS (Mac OS X), और # Generated (Perl)। इस तरह अगर कोई अलग ओएस या आईडीई का उपयोग करना चाहता है तो वे एक अनुभाग जोड़ सकते हैं और हम सभी साझा कर सकते हैं।
स्टुअर्ट आर। जेफरीज़

9
अंगूठे के लिए "मैं व्यक्तिगत रूप से जहाँ तक यह सुनिश्चित करने के लिए जाता हूं कि जब मैं किसी चीज पर काम नहीं कर रहा हूं तो मेरा सूचकांक हमेशा साफ रहे। (गिट स्थिति कुछ भी नहीं दिखानी चाहिए।)"
SGhosh

4
नायब। आधुनिक Git के साथ डिफ़ॉल्ट मान core.excludesfileहै ~/.config/git/ignore, XDG बेस डायरेक्टरी स्पेसिफिकेशन के अनुरूप है
Jakub Narębski

1
वैश्विक के लिए +1 .gitignore- बेहद फायदेमंद जब आप जिन लोगों के साथ धक्का दिए गए .gitignoreफ़ाइलों की सामग्री के बारे में असहमत हैं या उन्हें धक्का दिया जाना चाहिए, और हम सभी विभिन्न प्रकार के शोर पैदा करने वाले विभिन्न देव वातावरणों का उपयोग करते हैं।
क्रीज

1
davidwalsh.name/global-gitignore ग्लोबल इग्नोर के बारे में कुछ और जानकारी
फ्रोड अक्सेल्सन

11

मैंने कमिट .ignignore डाला, जो अन्य के लिए एक शिष्टाचार है जो मेरी परियोजना का निर्माण कर सकता है कि निम्नलिखित फाइलें प्राप्त की गई हैं और इसे अनदेखा किया जाना चाहिए।

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

इसलिए मेरी परियोजना में, मेरे पास सभी निर्मित निष्पादकों के साथ एक बिन उप निर्देशिका हो सकती है। फिर, मैं अपने बिन फ़ाइल निर्देशिका के लिए एक .itignore उत्पन्न करूँगा। और शीर्ष निर्देशिका .gitignore में जो बिन / .ITignore को सूचीबद्ध करता है। सबसे ऊपर जो मैं चेक कर रहा हूं।


0

कमिट करना .itignore बहुत उपयोगी हो सकता है, लेकिन आप यह सुनिश्चित करना चाहते हैं कि आप इसे बहुत अधिक संशोधित न करें, खासकर यदि आप नियमित रूप से शाखाओं के बीच स्विच करते हैं। यदि आप ऐसे मामले प्राप्त कर सकते हैं, जहां फ़ाइलों को एक शाखा में अनदेखा किया जाता है और दूसरे में नहीं, तो आप अपने कार्य निर्देशिका में फ़ाइलों को मैन्युअल रूप से हटाने या नाम बदलने के लिए मजबूर करें क्योंकि एक चेकआउट विफल हो गया क्योंकि यह एक गैर-ट्रैक की गई फ़ाइल को अधिलेखित कर देगा।

इसलिए हां, अपने .gitignore को कमिट करें, लेकिन इससे पहले कि आप निश्चित रूप से यह सुनिश्चित कर लें कि यह उसके बाद नहीं बदलेगा।


-6

.gitignore कम से कम अपने बिल्ड उत्पादों (प्रोग्राम, * .o, आदि) के लिए यह एक अच्छा अभ्यास है ।


11
इस सवाल का जवाब नहीं दिया: .gitignore खुद " .gitignoreडी" होना चाहिए ?
चार्ल्स वुड

6
वेतन ध्यान, कि सवाल नहीं था, और यह करता है इस सवाल का जवाब क्या कहा गया था: "[यह] एक Git रेपो में .gitignore प्रतिबद्ध करने के लिए एक अच्छा अभ्यास है?"।
papercowboy

5
@cayuu मेरा मानना ​​है कि उत्तर कहता है "यह .ignignore के लिए एक अच्छा अभ्यास है" xyz, मैं यह नहीं देखता कि यह सवाल का जवाब कैसे देता है। सवाल यह है कि .itignore को नियंत्रित संस्करण होना चाहिए या नहीं।
नाइटोग्राफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.