सवाल मैं गिट भंडार में एक खाली निर्देशिका कैसे जोड़ सकता हूं?


मैं एक गिट भंडार में एक खाली निर्देशिका (जिसमें कोई फाइल नहीं है) कैसे जोड़ सकता हूं?


3477
2017-09-22 16:41


मूल


हालांकि यह उपयोगी नहीं है, आपके रेपो में एक खाली (वास्तव में खाली) निर्देशिका हैक करने का एक तरीका है। यह नहीं होगा checkout हालांकि, गिट के मौजूदा संस्करणों के साथ। - tiwo
@tiwo मैं एक असहमत के लिए यह उपयोगी नहीं है। आपकी निर्देशिका पदानुक्रम आपकी परियोजना का हिस्सा है, इसलिए इसे संस्करण नियंत्रित किया जाना चाहिए। - JBentley
मेरे मामले में, मैं tmp फ़ाइलों के लिए एक निर्देशिका संरचना जोड़ना चाहता हूं, लेकिन टीएमपी फाइलें स्वयं नहीं। ऐसा करके, मेरे परीक्षक की सही संरचना होती है (अन्यथा त्रुटियां होती हैं) लेकिन मैं tmp डेटा के साथ अपना काम नहीं करता हूं। तो हाँ, यह मेरे लिए उपयोगी है! - Adam Marshall
@AdamMarshall मुझे लगता है कि टीवो कह रहा था कि हैक उपयोगी नहीं है, क्योंकि इसे चेकआउट द्वारा अनदेखा किया जाता है। टीएमपी डीआईआरएस एक वीसीएस के लिए एक उपयोगी सुविधा की तरह ध्वनि करते हैं। - Quantum7
टीएमपी फाइलें बनाने वाली प्रक्रिया में टीएमपी निर्देशिका क्यों नहीं है? - RyPeck


जवाब:


एक निर्देशिका बनाने के लिए एक और तरीका खाली रहना (भंडार में) एक बनाना है .gitignore उस निर्देशिका के अंदर फ़ाइल जिसमें इन चार पंक्तियां हैं:

# Ignore everything in this directory
*
# Except this file
!.gitignore

तो आपको आदेश को सही तरीके से प्राप्त करने की आवश्यकता नहीं है जिसे आपको m104 में करना है उपाय

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

बनाना @GreenAsJadeटिप्पणी लगातार जारी है:

मुझे लगता है कि यह ध्यान देने योग्य है कि यह समाधान ठीक से पूछताछ के लिए क्या करता है, लेकिन शायद इस सवाल को देखने वाले बहुत से लोग इस बात की तलाश नहीं कर रहे हैं। यह समाधान गारंटी देता है कि निर्देशिका खाली बनी हुई है। यह कहता है "मैं वास्तव में कभी भी फाइलों को चेक नहीं करना चाहता हूं"। "मेरे पास यहां जांचने के लिए कोई फाइल नहीं है, लेकिन मुझे यहां निर्देशिका की आवश्यकता है, फाइलें बाद में आ रही हैं"।


3365
2018-05-31 22:10



मुझे लगता है कि यह ध्यान देने योग्य है कि यह समाधान करता है ठीक सवाल के लिए क्या पूछा गया, लेकिन शायद इस सवाल को देखने वाले बहुत से लोग इस बात की तलाश नहीं कर रहे हैं। यह समाधान गारंटी देता है कि निर्देशिका खाली बनी हुई है। यह कहता है "मैं वास्तव में कभी भी फाइलों को चेक नहीं करना चाहता हूं"। "मेरे पास यहां जांचने के लिए कोई फाइल नहीं है, लेकिन मुझे यहां निर्देशिका की आवश्यकता है, फाइलें बाद में आ रही हैं"। - GreenAsJade
मुझे लगता है कि @ जॉनमी द्वारा प्रस्तावित रीडमे समाधान का उपयोग इस के साथ किया जाना चाहिए; .gitignore फ़ाइल हम जो संस्करण नियंत्रण से बाहर रखना चाहते हैं उसका स्पष्टीकरण प्रदान करते हैं, जबकि रीडमे फ़ाइल बताती है कि निर्देशिका का उद्देश्य क्या है, जो जानकारी के बहुत महत्वपूर्ण टुकड़े हैं। - pedromanoel
@pedromanoel मैं आपके द्वारा डाले गए दस्तावेज़ों को लिखता हूं README के अंदर .gitignore फ़ाइल (टिप्पणियों के रूप में)। - Carlos Campderrós
1 अंतर को स्पॉट करें: 1.) एक खाली फ़ोल्डर, 2.) इसमें एक .gitignore फ़ाइल वाला फ़ोल्डर। ;-) - Peter Perháč
तकनीकी रूप से यह एक खाली निर्देशिका नहीं है ... - Arash Saidi


आप नहीं कर सकते देखें गिट एफएक्यू

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

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

तुम कह सकते हो "git add <dir>" और यह   वहां फाइलें जोड़ देंगे।

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


983
2017-09-22 16:42



उत्तर के नीचे बहुत बेहतर है। तथ्य यह है कि निम्न स्तर के सॉफ़्टवेयर को गिट करने से यह कोई फर्क नहीं पड़ता कि मुझे एक खाली निर्देशिका की आवश्यकता होने पर वास्तव में गिट का उपयोग करने के लिए कितना मायने रखता है। एक 2 लाइन जोड़ना .gitignore मुझे स्वीकार्य लगता है। - Amala
खैर अगर कोई फाइल को नई निर्देशिका में ले जाना चाहता है, तो वे इसे नहीं कर सकते हैं git mv क्योंकि गिट शिकायत करेगा कि नई निर्देशिका संस्करण नियंत्रण में नहीं है - lulalala
तुम पढ़ सकते हो "यह असंभव है, आप नहीं कर सकते हैं, आदि"इस लगातार सवाल के लिए इंटरनेट पर सभी .gitignore चाल एक लगातार जवाब है, और कई जरूरतों को पूरा करता है। तथापि यह संभव है गिट ट्रैक बनाने के लिए वास्तव में खाली निर्देशिका, मेरा जवाब देखें - ofavre
हालांकि जितना अधिक मैं इसके बारे में सोचता हूं, उतना ही यह "खाली स्ट्रिंग का SHA हैश" जैसा लगता है, यदि यह वास्तव में मौजूद है होगा एक खाली पेड़ के लिए एक अच्छी तरह से परिभाषित पहचानकर्ता बनें, जब तक कि यह बताने में असंभव न हो कि वह वस्तु एक पेड़ या ब्लॉब है या नहीं। - Emil Lundberg
मैंने बहुत सारे रिपोज़ को देखा है जो एक खाली फ़ाइल का उपयोग करते हैं .gitkeep इस उद्देश्य के लिए। - Sukima


नामक एक खाली फ़ाइल बनाएँ .gitkeep निर्देशिका में, और इसे जोड़ें।


598
2017-12-07 16:03



+1 यह संवादात्मक है कि फ़ाइल पहले स्थान पर क्यों है - djhaskin987
मैंने एक जोड़ा है उत्तर बनाने के लिए प्रोत्साहित करना .keep बजाय। - A-B-B
.gitkeep गिट द्वारा निर्धारित नहीं किया गया है और लोगों को इसका अर्थ दूसरा अनुमान लगाने जा रहा है, जो उन्हें Google खोजों तक ले जाएगा, जो उन्हें यहां ले जाएगा। .git उपसर्ग सम्मेलन उन फ़ाइलों और निर्देशिकाओं के लिए आरक्षित होना चाहिए जो गिट स्वयं ही उपयोग करता है। - t-mart
@ टी-मार्ट "द .git उपसर्ग सम्मेलन आरक्षित होना चाहिए ... "क्यों? क्या गिट इस आरक्षण का अनुरोध करता है? - Limited Atonement
यह नहीं है मुद्दा यह है कि यह भ्रमित हो सकता है। - szablica


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


368
2018-03-14 23:38



+1, अच्छा सुझाव, एक खाली निर्देशिका तब तक कोई समझ नहीं लेती जब तक कि भविष्य में इसका उपयोग नहीं किया जा रहा हो। तो इसके अंदर एक रीडमे फ़ाइल बनाएं और लिखें कि यह निर्देशिका किस लिए है, और भविष्य में कौन सी फाइलें रखी जाएंगी। यह दोनों समस्याओं को हल करता है। - saeedgnu
मैं सहमत हूँ। खाली फ़ोल्डर परेशान हैं और किसी भी तरह के सभी उचित ढंग से संभाले गए भंडारों में समझाया जाना चाहिए। - Sold Out Activist
@ilius बकवास। खाली स्थितियों वाली एक निर्देशिका संरचना कई परिस्थितियों में अत्यधिक वांछनीय हो सकती है (जैसे एक एमवीसी ऐप जहां आप एक मॉडल निर्देशिका चाहते हैं लेकिन अभी तक कोई मॉडल बनाने के लिए नहीं मिला है, या साझा दृश्य निर्देशिका जो आप साझा दृश्य जोड़ने के लिए योजना बना रहे हैं, बाद में )। इसके अलावा, इनमें से प्रत्येक में एक रीडमी डालना अधिक है क्योंकि यह स्पष्ट है कि वे वहां क्या हैं, और उनमें से प्रत्येक में एक रीडमी डालना भूलना आसान है। और जब आप उन्हें कुछ अन्य फाइलें जोड़ते हैं तो आपको रीडमी को हटाना याद रखना होगा। असल में, गिट निश्चित रूप से खाली निर्देशिकाओं की अनुमति देनी चाहिए। - Jez
@ जेज़: मैं असहमत हूं। मुद्दा यह है कि गिट को स्रोत (कोड) को नियंत्रित करने के लिए डिज़ाइन किया गया है। महत्वपूर्ण बात यह है कि प्रतिबद्धता की आईडी सामग्री का हैश है। यही कहना है, इसमें सामग्री होनी चाहिए। आपको एक रीडमेड की आवश्यकता नहीं है प्रत्येक पेड़ का हिस्सा, केवल पत्ता नोड्स। यदि आपके पास ऐसे स्थान हैं जहां आप कोड डालना चाहते हैं, लेकिन कोई कोड नहीं है, और आप "मॉडलों के लिए स्थान" गूंजने के लिए समय भी नहीं लेंगे >> रीडमे, तो आपके पास क्या विचार है जो प्रतिबद्ध नहीं है। यह गिट करने के लिए ब्याज की बात नहीं है। कह रहा है "मैं चाहता हूं कि चल रहे ऐप में XYZ खाली निर्देशिकाएं हों" ए है क्रम समस्या, स्रोत समस्या नहीं है। इसे w / अपने इंस्टॉलर को संभालें। - Joe Atzberger
@ jbo5112 हां, मैंने "विशेष कोड" का उल्लेख किया है जिसका मैंने उल्लेख किया है "इंस्टॉलर"। आपके वेबएप इंस्टॉलेशन को पहले से ही डेटाबेस, स्थानीय कॉन्फ़िगरेशन, निर्भरता खींचने या 100 अन्य परिचालन बनाने में संभाल करना है, लेकिन कुछ खाली निर्देशिकाएं इससे परे हैं? ग्रेडल, यात्री, शेफ, एक आदिम मेकफ़ाइल इत्यादि का प्रयास करें। निर्देशिका बनाने और अन्य (संभावित रूप से कहीं अधिक जटिल / खतरनाक) ऐप इंस्टॉल करने के बीच कोई सुरक्षा अंतर नहीं है। और यदि आपके पास वास्तव में कोई deps, config, डीबी, आदि नहीं है, और कोई इंस्टॉलर नहीं है, तो बस README का उपयोग करें। किसी भी मामले में आपको दोनों को करने की आवश्यकता नहीं है। - Joe Atzberger


touch .keep

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

वैकल्पिक रूप से, जैसा कि दूसरे में उल्लेख किया गया है उत्तरनिर्देशिका में वर्णनात्मक हो सकता है README या README.md फ़ाइल बजाय।

बेशक यह आवश्यक है कि फ़ाइल की उपस्थिति आपके एप्लिकेशन को तोड़ने का कारण नहीं बनती है।


261
2018-01-29 04:29



यह प्रारंभिक नंगे निर्देशिका के लिए अच्छा है, लेकिन अगर यह फाइलों को भरना शुरू होता है तो क्या होगा? फिर गिट उन्हें नोटिस करेगा और उन्हें अनचाहे फाइलों के रूप में दावा करेगा। यहां चयनित उत्तर एक निर्देशिका को रखने की अनुमति देने के लिए कहीं अधिक सुंदरता से काम करता है लेकिन फिर सामग्री को सुरक्षित रूप से अनदेखा करता है। - JakeGould
प्रश्न और मुख्य सामान्य चिंता एक खाली निर्देशिका जोड़ने के बारे में है। अगर बाद में निवासी फ़ाइल है, तो स्पष्ट रूप से हटाएं .keep फ़ाइल या बस इसे नजरअंदाज करें। यदि इसके बजाय निर्देशिका में फ़ाइलों को अनदेखा किया जाना है, तो यह एक अलग सवाल है। - A-B-B
यह सुझाव दिया गया था कि git clean -nd | sed s/'^Would remove '// | xargs -I{} touch "{}.keep" यह सभी अनचाहे खाली निर्देशिकाओं में ऐसा करेगा। - A-B-B
इस समाधान को पसंद नहीं करते हैं, यह अनुमान करना मुश्किल है कि यह फ़ाइल क्या करती है। साथ ही, यदि आप अपने देव पर्यावरण (जैसे लॉग या इमेज इत्यादि) में फाइलें उत्पन्न कर रहे हैं, तो यह उन फाइलों को संस्करणित करने और उत्पादन में अपना रास्ता बनाने से नहीं रोक रहा है, जो अच्छा नहीं है। - danielrvt
विंडोज़ नामों के बिना फाइल पसंद नहीं करता है और इसे पूरा करने के लिए विशेष जादू की आवश्यकता होती है (उर्फ एक बैश-जैसे टर्मिनल ऐप या समतुल्य)। - EntangledLoops


हमें खाली संस्करण वाले फ़ोल्डरों की आवश्यकता क्यों होगी

पहली चीजें पहले:

एक खाली निर्देशिका गिट संस्करण प्रणाली के तहत एक पेड़ का हिस्सा नहीं हो सकता है

यह बस ट्रैक नहीं किया जाएगा। लेकिन ऐसे परिदृश्य हैं जिनमें "संस्करण" एक खाली निर्देशिका उपयोगी हो सकती है, उदाहरण के लिए:

  • का निर्माण पूर्वनिर्धारित फ़ोल्डर संरचना उपयोगी प्रोजेक्ट फ़ोल्डर्स के लिए, और इस संरचना को रिपोजिटरी के प्रत्येक उपयोगकर्ता / योगदानकर्ता के लिए उपलब्ध कराएं; या, उपरोक्त के एक विशेष मामले के रूप में, के लिए एक फ़ोल्डर बनाते हैं अस्थायी फ़ाइलें, जैसे की cache/ या logs/ निर्देशिका
  • कुछ परियोजनाएं बस कुछ फ़ोल्डरों के बिना काम नहीं करेगा (जो प्रायः खराब डिजाइन किए गए प्रोजेक्ट का संकेत होता है, लेकिन यह अक्सर वास्तविक दुनिया का परिदृश्य है और शायद कह सकता है, अनुमति समस्याएं हो सकती हैं)।

कुछ सुझाए गए कामकाज

कई उपयोगकर्ता सुझाव देते हैं:

  1. एक रखो README निर्देशिका को गैर-खाली बनाने के लिए फ़ाइल या कुछ सामग्री के साथ एक और फ़ाइल, या
  2. बनाना .gitignore एक प्रकार के "रिवर्स लॉजिक" (यानी सभी फाइलों को शामिल करने के लिए) के साथ फ़ाइल करें, अंत में, दृष्टिकोण # 1 के समान उद्देश्य परोसता है।

जबकि दोनों समाधान निश्चित रूप से काम करते हैं मैं उन्हें गिट संस्करण के लिए एक सार्थक दृष्टिकोण के साथ असंगत पाते हैं।

  • आपको फर्जी फाइलें या रीडमेम्स क्यों डालना चाहिए जो शायद आप वास्तव में अपनी परियोजना में नहीं चाहते हैं?
  • क्यों उपयोग करें .gitignore एक काम करने के लिए (रखना फाइलें) जो इसके विपरीत है इसका बहुत विपरीत है (के सिवा फाइलें), भले ही यह संभव है?

गिटकीप दृष्टिकोण

एक का प्रयोग करें खाली फ़ाइल कहा जाता है .gitkeep संस्करण प्रणाली में फ़ोल्डर की उपस्थिति को मजबूर करने के लिए।

हालांकि ऐसा कोई बड़ा अंतर नहीं लग सकता है:

  • आप एक फाइल का उपयोग करते हैं जिसमें है एक फ़ोल्डर रखने का उद्देश्य। आप वहां कोई ऐसी जानकारी नहीं डालते जिसे आप नहीं रखना चाहते हैं।

    उदाहरण के लिए, आपको उपयोगी जानकारी के साथ READMEs का उपयोग करना चाहिए, फ़ोल्डर को रखने का बहाना नहीं।

    चिंताओं का पृथक्करण हमेशा एक अच्छी बात है, और आप अभी भी एक जोड़ सकते हैं .gitignore अवांछित फ़ाइलों को अनदेखा करने के लिए।

  • इसका नामकरण .gitkeep यह फ़ाइल नाम से ही बहुत स्पष्ट और सीधा बनाता है (और भी अन्य डेवलपर्स के लिए, जो एक साझा परियोजना के लिए अच्छा है और एक गिट भंडार के मुख्य उद्देश्यों में से एक है) कि यह फ़ाइल है

    • कोड से संबंधित एक फ़ाइल (प्रमुख बिंदु और नाम की वजह से)
    • एक फ़ाइल स्पष्ट रूप से गिट से संबंधित है
    • इसका उद्देश्य (रखना) स्पष्ट रूप से कहा गया है और इसके अर्थ में लगातार और अर्थात् विरोध किया गया है नज़रअंदाज़ करना

दत्तक ग्रहण

मैंने देखा है .gitkeep दृष्टिकोण जैसे महत्वपूर्ण ढांचे द्वारा अपनाया गया दृष्टिकोण Laravel, कोणीय-CLI


204
2017-12-04 23:32



आपने एक विचार छोड़ा - रखने और खाली फ़ोल्डर (उदा। / लॉग, / tmp, / अपलोड) के कारण क्या हैं? हाँ - फ़ोल्डर को खाली रखने के लिए। :) तो अगर आप फ़ोल्डर को खाली रखना चाहते हैं, तो आपको इसके अंदर की फाइलों को अनदेखा करना होगा। - Roman
@RomanAllenstein: जरूरी नहीं। यह हो सकता है कि आप किसी दिए गए ढांचे के साथ रेपो बनाते हैं जो बाद में आबादी में हो सकता है। उन फ़ाइलों को जैसे ही वे बनाए जाते हैं, रेपो में जोड़े जाएंगे, और इसे हटाना या संपादित करना शुरू करना मुश्किल होगा। गिटिनोरोर फाइलें (और खतरनाक, क्योंकि शायद आपको यह भी एहसास नहीं होता कि उन्हें ट्रैक नहीं किया जा रहा है: गिट उन्हें अनदेखा कर रहा है ) - dangonfast
डाउनवोट: वर्बोज़ उत्तर। - Behnam
@ बेहनाम: मैं डाउनवोट ले जाऊंगा, लेकिन एसओ पर मेरा शोध। मेटा वर्बोज़ उत्तरों के प्रति कोई चिंता नहीं दिखाता है, जब तक कि वे प्रत्येक पाठक (और प्रत्येक कौशल स्तर) के लिए उपयोगी होने के लिए पर्याप्त विवरण और स्पष्टता प्रदान करते हैं। फिर भी मैं किसी भी आलोचना के लिए बहुत खुले हूं और सार्वजनिक रूप से कारण घोषित करने के लिए धन्यवाद, मैं इसे बहुत सकारात्मक मानता हूं। - Cranio
यदि आप प्रतिस्थापित करने के लिए अपना जवाब संपादित करते हैं .gitkeep किसी अन्य गैर गिट-प्रीफिक्स्ड फ़ाइल नाम के साथ आपको मेरा अपवॉट मिलता है, मुझे लगता है कि यह सबसे अच्छा और सबसे जानकारीपूर्ण उत्तर है। कारण: मुझे लगता है कि ".git *" गिट निर्धारित फाइलों के लिए आरक्षित होना चाहिए, जबकि यह केवल एक प्लेसहोल्डर है। मेरा पहला अनुमान जब मैंने देखा कि उदाहरण के लिए ".gitkeep" फ़ाइल को स्वतः अनदेखा किया जाएगा (यह एक अच्छी सुविधा होगी) लेकिन यह मामला नहीं है, है ना? - Johnny


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

find . -type d -empty -exec touch {}/.gitignore \;

119
2018-05-03 15:17



आप .git निर्देशिका को अनदेखा करना चाह सकते हैं: find . -name .git -prune -o -type d -empty -exec touch {}/.gitignore \; - steffen
ज्यादातर स्थितियों के लिए एक सरल भिन्नता है find * -type d -empty -exec touch {}/.gitignore \; - akhan
चूंकि ओएस एक्स लगभग हर डायरेक्ट में एक .DS_Store फ़ाइल बनाता है, यह वहां काम नहीं करता है। मैंने पाया केवल एकमात्र (खतरनाक!) कामकाज, सभी .DS_Store फ़ाइलों को पहले से हटा देना था find . -name .DS_Store -exec rm {} \; और उसके बाद इस उत्तर से पसंदीदा संस्करण का उपयोग करें। केवल सही फ़ोल्डर में इसे निष्पादित करना सुनिश्चित करें! - zerweck
क्या किसी को विंडोज़ में कमांड लाइन से ऐसा करने का कोई तरीका पता है? मैंने रूबी और पायथन में कुछ समाधान यहां देखे हैं, लेकिन अगर इसे प्रबंधित किया जा सकता है तो मुझे एक बेयरबोन समाधान चाहिए। - Mig82
@akhan कुछ जोड़ने के लिए .gitignore पर कोई प्रभाव नहीं है -empty का झंडा find आदेश। मेरी टिप्पणी को हटाने के बारे में है .DS_Store एक निर्देशिका पेड़ में फ़ाइलें, तो -empty ध्वज लागू किया जा सकता है। - zerweck


एंडी लेस्टर सही है, लेकिन अगर आपकी निर्देशिका को खाली होना चाहिए, और नहीं खाली खाली, आप खाली रख सकते हैं .gitignore एक वर्कअराउंड के रूप में वहाँ फ़ाइल।

एक तरफ के रूप में, यह एक कार्यान्वयन मुद्दा है, न कि मौलिक गिट स्टोरेज डिजाइन समस्या। जैसा कि गिट मेलिंग सूची पर कई बार उल्लेख किया गया है, इसका कारण यह नहीं लगाया गया है कि किसी ने भी इसके लिए पैच जमा करने के लिए पर्याप्त देखभाल नहीं की है, न कि यह किया जा सकता है या नहीं किया जाना चाहिए।


57
2017-09-22 17:28



यही वही है जो मैंने कहा था। दोनों पैराग्राफ को पोस्ट किए गए एफएक्यू के स्निपेट में संबोधित किया जाता है। - Andy Lester
मुझे लगता है कि एक तरफ जानना दिलचस्प और उपयोगी है - इसे ठीक किया जा सकता है, ज्यादातर मामलों के लिए ऐसा आसान कामकाज होने पर जल्द ही इसकी अपेक्षा न करें। - wnoise
क्षमा करें, मैंने अंतिम पैराग्राफ नहीं पढ़ा, और जब मैंने पहला पैराग्राफ पढ़ा, तो मुझे यकीन नहीं है कि मैंने उस जानकारी को दोहराया क्यों। - Aristotle Pagaltzis
बेशक, यह अतिरिक्त जवाब इस तथ्य को इंगित करने के लिए काम करता है। - Michael Johnson
मैं यहां एक ऐसे मामले को देख रहा हूं जहां निर्देशिका मौजूद नहीं है और डिफ़ॉल्ट रूप से यह खाली है, लेकिन इसे खाली होने की आवश्यकता नहीं है। एक .gitignore बनाना सही बात करता है। - Joshua


रूबी ऑन रेल्स मार्ग:

mkdir log && touch log/.gitkeep && git add log/.gitkeep

अब लॉग निर्देशिका पेड़ में शामिल किया जाएगा। तैनाती करते समय यह बहुत उपयोगी होता है, इसलिए आपको लॉग निर्देशिका बनाने के लिए नियमित रूप से लिखना नहीं होगा।

लॉगफाइल जारी करके बाहर रखा जा सकता है,

echo log/dev.log >> .gitignore

लेकिन आप शायद यह जानते थे।


29
2017-10-22 13:24



रूबी पर रूबी के साथ क्या करना है? - Quolonel Questions
@QuolonelQuestions github.com/rails/rails/blob/master/activerecord/test/migrations/... - Radon Rosborough


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

मैं खाली निर्देशिका में एक README फ़ाइल डालने का सुझाव देता हूं कि यह बता रहा है कि निर्देशिका खाली क्यों है और इसे गिट में क्यों ट्रैक किया जाना चाहिए। रीडमे फ़ाइल के साथ, जहां तक ​​गिट का संबंध है, निर्देशिका अब खाली नहीं है।

असली सवाल यह है कि आपको गिट में खाली निर्देशिका क्यों चाहिए? आमतौर पर आपके पास कुछ प्रकार की बिल्ड स्क्रिप्ट होती है जो संकलन / चलने से पहले खाली निर्देशिका बना सकती है। यदि नहीं तो एक बनाओ। गिट में खाली निर्देशिका डालने से यह एक बेहतर समाधान है।

तो आपके पास कुछ कारण है कि आपको गिट में खाली निर्देशिका क्यों चाहिए। रीडमे फ़ाइल में उस कारण को रखें। इस तरह अन्य डेवलपर्स (और भविष्य आप) ​​जानते हैं कि खाली निर्देशिका क्यों होनी चाहिए। आपको यह भी पता चलेगा कि खाली निर्देशिका को हल करने की समस्या को हल करने के दौरान आप खाली निर्देशिका को हटा सकते हैं।


प्रत्येक खाली निर्देशिका को सूचीबद्ध करने के लिए निम्न आदेश का उपयोग करें:

find -name .git -prune -o -type d -empty -print

प्रत्येक खाली निर्देशिका में प्लेसहोल्डर READMEs बनाने के लिए:

find -name .git -prune -o -type d -empty -exec sh -c \
  "echo this directory needs to be empty because reasons > {}/README.emptydir" \;

README फ़ाइल को छोड़कर निर्देशिका में सब कुछ अनदेखा करने के लिए निम्न पंक्तियां आपके अंदर रखी गई हैं .gitignore:

path/to/emptydir/*
!path/to/emptydir/README.emptydir
path/to/otheremptydir/*
!path/to/otheremptydir/README.emptydir

वैकल्पिक रूप से, आप बस बाहर कर सकते हैं प्रत्येक रीडमे फ़ाइल को नजरअंदाज करने से:

path/to/emptydir/*
path/to/otheremptydir/*
!README.emptydir

प्रत्येक README को पहले से बनाए जाने के बाद सूचीबद्ध करने के लिए:

find -name README.emptydir

26
2018-05-06 15:45





चेतावनी: यह चिमटा वास्तव में काम नहीं कर रहा है क्योंकि यह पता चला है। असुविधा के लिए खेद है।

नीचे मूल पोस्ट:

गिट आंतरिक के साथ खेलते समय मुझे एक समाधान मिला!

  1. मान लीजिए कि आप अपने भंडार में हैं।
  2. अपनी खाली निर्देशिका बनाएं:

    $ mkdir path/to/empty-folder
    
  3. इसे एक नलसाजी कमांड और खाली पेड़ का उपयोग कर इंडेक्स में जोड़ें SHA-1:

    $ git update-index --index-info
    040000 tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904    path/to/empty-folder
    

    आदेश टाइप करें और फिर दूसरी पंक्ति दर्ज करें। दबाएँ दर्ज और फिर Ctrl + डी अपने इनपुट को समाप्त करने के लिए। नोट: प्रारूप है मोड [SPACE] प्रकार [स्पेस] SHA-1hash [टैब] पथ (टैब महत्वपूर्ण है, उत्तर स्वरूपण इसे संरक्षित नहीं करता है)।

  4. बस! आपका खाली फ़ोल्डर आपकी अनुक्रमणिका में है। आपको बस इतना करना है।

यह समाधान छोटा है और स्पष्ट रूप से ठीक काम करता है (संपादित करें देखें!), लेकिन यह याद रखना इतना आसान नहीं है ...

खाली पेड़ SHA-1 एक नया खाली गिट भंडार बनाकर पाया जा सकता है, cd इसमें और मुद्दा git write-tree, जो खाली पेड़ SHA-1 आउटपुट करता है।

संपादित करें:

मैं इस समाधान का उपयोग कर रहा हूं क्योंकि मुझे यह मिला है। यह एक सबमिशन बनाने के समान ही काम करता प्रतीत होता है, सिवाय इसके कि कोई मॉड्यूल कहीं भी परिभाषित नहीं किया गया है। जारी होने पर यह त्रुटियों की ओर जाता है git submodule init|update। समस्या यह है कि git update-index फिर से लिखता है 040000 tree भाग में 160000 commit

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

हालांकि, अगर आप पहले से (और नहीं करेंगे) अपने भंडार में किसी भी गिट सबमिड्यूल का उपयोग नहीं करते हैं, और "खाली" फ़ोल्डर खाली रहेगा या यदि आप गिट को अपने अस्तित्व के बारे में जानना चाहते हैं और इसकी सामग्री को अनदेखा करना चाहते हैं, तो आप साथ जा सकते हैं यह चिमटा Submodules के साथ सामान्य तरीका जा रहा है कि इस tweak और कदम उठाता है।


22
2018-01-20 15:50



खाली फ़ोल्डर को इंडेक्स में डालने और करने के बाद, क्या यह संभव है git svn dcommit वांछित परिणाम के साथ? - Limited Atonement
यह असंभव है कि यह चिमटा किसी भी अन्य उपकरण के साथ काम करेगा। जैसा कि चेतावनी और संपादन में बताया गया है, मैं इसे तब तक हतोत्साहित करता हूं जब तक कि काफी प्रतिबंधित मामले में न हो। - ofavre
जिज्ञासु के लिए, यह गिटहब यूआई पर काम करता है: github.com/cirosantilli/test-empty-subdir , लेकिन जब आप इसे क्लोन करते हैं, तो यह चेक आउट नहीं होता है। - Ciro Santilli 新疆改造中心 六四事件 法轮功
@CiroSantilli 六四 事件 法轮功 包 卓 轩 मुझे इस प्रकार की खाली निर्देशिका मिली github.com/abhisekp/empty-dir - abhisekp
@PyRulez अच्छी तरह से, सॉफ्टवेयर दुनिया में, कुछ भी असंभव नहीं है। : डी असल में, मैंने जवाब का पालन किया। - abhisekp