.Gitignore और .gitkeep के बीच अंतर क्या हैं?


1924

.gitignoreऔर के बीच अंतर क्या हैं .gitkeep? क्या वे एक अलग नाम के साथ समान हैं, या क्या वे दोनों एक अलग कार्य करते हैं?

मुझे लगता है कि इस पर बहुत अधिक दस्तावेज नहीं मिल पाए हैं .gitkeep

जवाबों:


3435

.gitkeep प्रलेखित नहीं है, क्योंकि यह Git की विशेषता नहीं है।

Git पूरी तरह से खाली निर्देशिका नहीं जोड़ सकता है । जो लोग Git में खाली निर्देशिकाओं को ट्रैक करना चाहते हैं, उन्होंने .gitkeepइन निर्देशिकाओं में बुलाई गई फ़ाइलों को डालने का सम्मेलन बनाया है । फ़ाइल को कुछ भी कहा जा सकता है; Git इस नाम का कोई विशेष महत्व नहीं बताता है।

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


414
क्या यह एक बेहतर समाधान नहीं होगा कि किसी READMEफ़ाइल को अन्यथा खाली उपनिर्देशिका में डाल दिया जाए जिसमें इस बारे में थोड़ी जानकारी हो कि उपनिर्देशिका किसके लिए उपयोग होने वाली है? ऐसा लगता है .gitkeepकि फाइल का नाम भ्रमित है जो वास्तव में गिट का हिस्सा नहीं है।
तमोगुण

423
@tamouse कई बार, खाली निर्देशिका (जैसे फ़ोल्डरों के नाम) का मार्ग यह व्यक्त करने के लिए पर्याप्त है (उदाहरण: टेम्पलेट / कैश, अपलोड / अंगूठे आदि)। इन मामलों में इनमें से प्रत्येक में रीडमीट डालना बेमानी लगता है।
हालिल Halzgür

16
जो लोग खाली निर्देशिकाओं पर नज़र रखना चाहते हैं, उन्हें README में यह संकेत देना चाहिए कि निर्देशिका को उनके निर्माण उपकरण का उपयोग करके निर्देशिकाओं को बनाना या बनाना है या जो भी उपकरण (नों) को निर्देशिका के अस्तित्व की आवश्यकता है; /

32
@tamouse, @omouse: .gitignoreदो पंक्तियों वाली एक फ़ाइल: *और !.gitignoreयह बताने के लिए पर्याप्त स्पष्टता से अधिक है कि क्या चल रहा है। यदि अधिक विस्तार की आवश्यकता है, तो # सिंटैक्स का उपयोग करके फ़ाइल के शीर्ष पर एक टिप्पणी जोड़ें ।
दरोगाओं का

63
यह ध्यान देने योग्य है कि लोकप्रिय रेल ढांचे ने इन खाली फ़ोल्डरों को संरक्षित करने के .keepबजाय फाइलों का उपयोग करके इस सम्मेलन को थोड़ा बदल दिया है .gitkeep, क्योंकि गिट एकमात्र स्रोत नियंत्रण प्रणाली नहीं है जो खाली फ़ोल्डरों को ट्रैक नहीं करता है। यहाँ अधिक विवरण: github.com/rails/rails/issues/2800
क्लाउडियो Floreani

330

.gitkeepबस एक प्लेसहोल्डर है। एक डमी फ़ाइल, इसलिए गिट निर्देशिका के बारे में नहीं भूलेंगे, क्योंकि गिट केवल फाइलों को ट्रैक करता है।


यदि आप एक खाली निर्देशिका चाहते हैं और सुनिश्चित करें कि यह Git के लिए 'साफ' रहता है, .gitignoreतो निम्नलिखित पंक्तियों को बनाएँ :

# .gitignore sample
###################

# Ignore all files in this dir...
*

# ... except for this one.
!.gitignore

यदि आप चाहते हैं कि केवल एक प्रकार की फाइलें Git को दिखाई दे रही हैं, तो यहां एक उदाहरण है कि कैसे सब कुछ फ़िल्टर किया जाए, .gitignore और सभी .txtफाइलें:

# .gitignore to keep just .txt files
###################################

# Filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

('#' टिप्पणियों को इंगित करता है।)


3
मुझे यह अभ्यास खुद पसंद है। अगर इन निर्देशिकाओं में स्रोत कोड होता है तो .itkeep और सामान्य के लिए इसकी कोई आवश्यकता नहीं होगी। यह टेम्पर / कैश / उपयोगकर्ता सामग्री है जो परीक्षण के दौरान किसी भी तरह से उत्पन्न होगी जिससे आपको उन फ़ाइलों को भी
भेजना होगा

1
आपको !सामने की आवश्यकता क्यों है .gitignore? क्या यह डॉट से बचने के लिए है?
विल

7
@Will - नहीं, !निम्न भाग की उपेक्षा करता है, जैसे यह आमतौर पर प्रोग्रामिंग में करता है।
15

3
कोई डाल करने के लिए की जरूरत है !.gitignoreबल एक Git में फ़ाइल की अनदेखी, या तो फ़ाइल तो जोड़ने, संपादित करने, या उचित सामग्री के साथ इसे जोड़ ( "*" बस यकीन है कि फ़ोल्डर मौजूद है सब कुछ, या कुछ लेना देना नहीं अनदेखी करने के लिए) आगे उदाहरण
AD7six

13
आपके लिंक से: Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked.------ यदि यह नहीं है, और आप एक जबरदस्त ऐड नहीं करते हैं, तो आप इसके बारे में भूल सकते हैं। तुच्छ मामलों में, कोई समस्या नहीं है, लेकिन अगर यह एक बड़ी फ़ाइल है तो आप परेशान हो सकते हैं। उपयोग करने !.gitignoreसे आप अपने पैर में खुद को गोली मारने से रोकते हैं। मैं इसे पसंद करता हूं, अतीत में खुद को जला दिया।
sjas

125
.gitignore

एक पाठ फ़ाइल है जिसमें आपकी निर्देशिका में फ़ाइलों की एक सूची शामिल है जो गिट को अनदेखा करेगी या रिपॉजिटरी में जोड़ / अपडेट नहीं करेगी।

.gitkeep

चूँकि Git एक रिपॉजिटरी में खाली निर्देशिकाओं को हटाता है या नहीं जोड़ता है,। ofitkeep एक हैक की तरह है (मुझे नहीं लगता कि इसे आधिकारिक तौर पर Git के हिस्से के रूप में नाम दिया गया है) रिपॉजिटरी में खाली निर्देशिका रखने के लिए।

बस touch /path/to/emptydirectory/.gitkeepफ़ाइल को जोड़ने के लिए एक करें, और Git अब रिपॉजिटरी में इस निर्देशिका को बनाए रखने में सक्षम होगा।


18
आप जितने चाहें उतने .gitignoreएस हो सकते हैं, अगर आप हर बार हर फ़ोल्डर में पूरा रास्ता नहीं बताना चाहते हैं।
साजा

1
मैं .gitkeepफ़ाइल में रिक्त निर्देशिका सूची का उल्लेख करने की कोशिश करता हूं, लेकिन यह खाली निर्देशिकाओं को ट्रैक नहीं करेगा, केवल फ़ोल्डर ट्रैक जहां .gitkeepफ़ाइल मौजूद है। ऐसा क्यों ?
परदीप जैन

2
.विज्ञानी काम की तरह काम नहीं करता है। यह चारों ओर रखने के लिए निर्देशिकाओं की सूची नहीं है। यह केवल एक खाली फ़ाइल है जो उस निर्देशिका में रहती है जिसे आप अपने आसपास रखना चाहते हैं। यह कुछ भी नामित किया जा सकता है आप .keep चाहते हैं, आदि तो तुम / foo / बार और gitkeep फ़ाइल की तरह एक निर्देशिका है /foo/bar/.gitkeep हो जाएगा कर सकते हैं
जिम मुनरो

@sjas .gitignoreहर बार हर फ़ोल्डर में पूरे रास्ते को निर्दिष्ट करने से आपको कैसे बचाएंगे ? मुझे लगता है कि मुझे कुछ स्पष्ट याद आ रहा है।
विल्वशर्प
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.