वास्तव में .gitignore क्या है?


212

मैंने सिर्फ एक जीथब रिपॉजिटरी बनाई और सोच रहा था कि .gitignoreफाइल किस लिए थी। मैंने एक नहीं बनाकर शुरू किया, लेकिन इस तथ्य के कारण एक जोड़ा कि अधिकांश रिपॉजिटरी में एक है। क्या मुझे एक होना चाहिए? क्या मैं इसे अनदेखा कर सकता हूं या इसका कोई उपयोग है? मैंने इस विषय पर कुछ शोध किया, लेकिन एक ठोस स्पष्टीकरण नहीं मिला।

जवाबों:


175

.gitignoreयह बताता है कि कौन सी फाइल (या पैटर्न) को नजरअंदाज करना चाहिए। इसका उपयोग आम तौर पर आपके कामकाजी निर्देशिका से क्षणिक फ़ाइलों को करने से बचने के लिए किया जाता है जो अन्य सहयोगियों के लिए उपयोगी नहीं हैं, जैसे कि संकलन उत्पाद, अस्थायी फ़ाइलें आईडीई आदि।

आप पूरी जानकारी यहाँ पा सकते हैं ।


इसलिए यदि आप github.com पर एक नए रिपॉजिटरी में एक .gitignore बनाते हैं, और फिर एक git init और git add करते हैं आपके स्थानीय कंप्यूटर पर - .ignignore से अभी तक जुड़ा नहीं है क्योंकि यह अभी तक उस भंडार से जुड़ा नहीं है - यह कैसे काम करता है? क्या यह प्रभावी होता है जब मैं एक प्रदर्शन करता हूँ? या?
ज़ोनट्रॉन

किसके लिए _._gitignoreउपयोग किया जाता है? क्या इसका उपयोग केवल तब होता gitignore है जब उप उप में होता है?
साकेत चक्रवर्ती

तो यह स्थानीय रूप से बना रहता है, लेकिन मूल की ओर धकेला नहीं जाता है? इसलिए यदि कुछ उपयोगकर्ता गिथब रेपो डाउनलोड करते हैं, तो क्या वह गुप्त फ़ाइल भी इसके साथ डाउनलोड हो जाती है?
मिलें

उपेक्षा का क्या मतलब है? कौन / क्या / कब अनदेखी करता है? मुझे पता है कि शब्द की अनदेखी का क्या मतलब है, लेकिन मुझे इस बात का स्पष्ट विवरण नहीं मिला है कि Git के संदर्भ में अनदेखी का क्या मतलब है। स्पष्ट रूप से यह शब्द उन लोगों द्वारा पूरी तरह से समझा जा सकता है जो इसे समझते हैं, लेकिन लोगों के लिए कुछ परिभाषित करने के लिए कुछ भी लिखा है जो पहले से ही नहीं जानते हैं कि यह उन सभी शब्दों की व्याख्या करने की आवश्यकता है जिनके संदर्भ के लिए अद्वितीय है।
user34660

1
@ user34660 इग्नोर का मतलब सिर्फ इतना है कि - Git फाइल में (पैटर्न) द्वारा निर्दिष्ट फाइलों में परिवर्तन को ट्रैक नहीं करेगा .gitignore। यहां तक ​​कि अगर आप उन्हें बदलते हैं, तो उन्हें संशोधित रूप में नहीं दिखाया जाएगा।
मुरेनिक

42

यह उन फ़ाइलों की सूची है जिन्हें आप अपनी कार्य निर्देशिका में अनदेखा करना चाहते हैं।

कहते हैं कि आप एक मैक पर हैं और आपके पास अपनी सभी निर्देशिकाओं में .DS_Store फाइलें हैं। आप उन्हें अनदेखा करना चाहते हैं, इसलिए आप .DS_Store को .ignignore में एक पंक्ति के रूप में जोड़ते हैं। और इसी तरह।

Git डॉक्स आपको वह सब बताएंगे जो आपको जानना आवश्यक है: http://git-scm.com/docs/gitignore


2
आपका .DS_Storeपरिदृश्य अंततः मेरे साथ प्रतिध्वनित हो गया क्योंकि मुझे लगता है कि मैं इस अवधारणा पर नहीं चल रहा था क्योंकि मुझे अभी तक किसी परियोजना में इसका उपयोग करने की आवश्यकता नहीं थी। धन्यवाद। मैंने इसे एक प्रारंभिक बिंदु के रूप में उपयोग करना समाप्त कर दिया क्योंकि मैं सभी अलग-अलग ऑपरेटिंग सिस्टम का उपयोग करता हूं विशेष रूप से # OS generated files #अनुभाग को ध्यान में रखते हुए ।
फीनिक्सलैफ

2
मुझे पता है कि मुझे इस धागे में देर हो गई है, लेकिन धन्यवाद @AndyLester! मैं एक नौसिखिया हूँ जब यह प्रोग्रामिंग और गितुब की बात आती है। मुझे लगता है कि इस तरह के प्रश्न को संबोधित करने के लिए लिखे गए कई जवाब मिलते हैं, नौसिखिया समझ में नहीं आता (यानी, संकलन उत्पादों, अस्थायी फ़ाइलें आईडीई बना सकते हैं .... क्या h @ ll ये बातें हैं!)। हालाँकि, आपका मैक विवरण इसकी सुरुचिपूर्ण सादगी में परिपूर्ण है!
वेसुकियो

21

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

इसके अलावा, महत्वपूर्ण रूप git status से सबसे अधिक उपयोग की जाने वाली कमांड में से एक है जहां आप git statusउन फ़ाइलों को सूचीबद्ध करना चाहते हैं जिन्हें संशोधित किया गया है।

आप चाहते हैं कि आपकी git statusसूची अवांछित फ़ाइलों से साफ दिखे। उदाहरण के लिए, मुझे लगा a.cpp, b.cpp, c.cpp, d.cpp & e.cppकि मैं चाहता हूं कि मैं git statusनिम्नलिखित को सूचीबद्ध करूं :

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

मैंgit status निर्माण फ़ोल्डर से मध्यस्थ ऑब्जेक्ट फ़ाइलों और फ़ाइलों के साथ इस तरह से परिवर्तित फ़ाइलों को सूचीबद्ध नहीं करना चाहता

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

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

.gitignoreअनावश्यक फ़ाइलों को करने से बचने के लिए मेरा अनुसरण है

/*.cmake
/*.DS_Store
/.user
/build

7

ऐसी फाइलें हैं जिन्हें आप चेक इन नहीं करना चाहते हैं। Git आपकी फ़ाइल में प्रत्येक फ़ाइल को तीन चीजों में से एक के रूप में देखता है:

  1. ट्रैक किया गया - एक फाइल जो पहले मंचित या प्रतिबद्ध हो चुकी है;
  2. अनट्रैकेड - एक फाइल जिसे मंचन या प्रतिबद्ध नहीं किया गया है; या
  3. नजरअंदाज किया गया - एक फाइल जिसे Git को नजरअंदाज करने के लिए स्पष्ट रूप से कहा गया है।

नजरअंदाज की गई फाइलें आमतौर पर कलाकृतियां और मशीन से तैयार की जाने वाली फाइलें होती हैं, जिन्हें आपके भंडार स्रोत से प्राप्त किया जा सकता है या अन्यथा कमिट नहीं किया जाना चाहिए। कुछ सामान्य उदाहरण हैं:

  • निर्भरता कैश, /node_modulesया की सामग्री के रूप में/packages
  • संकलित कोड, जैसे .o, .pycऔर .classफ़ाइलें
  • निर्माण उत्पादन निर्देशिका, जैसे /bin, /out, या/target
  • रनटाइम पर उत्पन्न फ़ाइलों, जैसे .log, .lock, या.tmp
  • छिपी हुई सिस्टम फ़ाइलें, जैसे .DS_StoreयाThumbs.db
  • व्यक्तिगत IDE कॉन्फ़िगरेशन फ़ाइलें, जैसे .idea/workspace.xml

नजरअंदाज की गई फाइलों को एक विशेष फाइल में ट्रैक किया .gitignoreजाता है जिसका नाम आपकी रिपॉजिटरी के रूट में चेक किया गया है। कोई स्पष्ट git अनदेखा कमांड नहीं है: इसके बजाय .gitignoreफ़ाइल को संपादित और हाथ से प्रतिबद्ध होना चाहिए जब आपके पास नई फाइलें होती हैं जिन्हें आप अनदेखा करना चाहते हैं। .gitignoreफ़ाइलों में वे पैटर्न होते हैं, जो आपके रिपॉजिटरी में फ़ाइल नामों के साथ मेल खाते हैं, यह निर्धारित करने के लिए कि उन्हें अनदेखा किया जाना चाहिए या नहीं। यहाँ एक नमूना.gitignore फ़ाइल है। अधिक जानकारी के लिए इस लिंक को देखें


5

.Ignignore का मुख्य उद्देश्य - इसलिए आप अप्रासंगिक फाइलों आदि को जोड़ने से बचें। Git

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

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