2011-11-06 11 views
50

इस तरह के कई प्रश्न हैं, लेकिन कोई भी जवाब मेरे लिए काम नहीं करता है।.gitignore सभी फ़ाइलों को अनदेखा करते हैं तो फिर से * .foo

मैं के साथ * .foo

(किसी सोच रहा है, तो यह कैसे उचित हो सकता है फ़ाइलों को छोड़कर मेरी भंडार नीचे फ़ोल्डर में सब कुछ अनदेखा करना चाहते हैं - मैं वास्तव में एक Git भंडार मेरे सारे "तर्क" के लिए बना रही हूँ परियोजनाएं - मैक पर संगीत सॉफ्टवेयर - लेकिन मैं केवल वास्तविक प्रोजेक्ट फाइलों को संग्रहीत करना चाहता हूं * .logic)

मैं इसे वर्तनी करने जा रहा हूं, इसलिए हम सभी एक ही प्लेट पर हैं।

सेटअप::

mkdir temp 
cd temp 
mkdir testdir 
cd testdir 
touch include.foo 
touch dontinclude.bad 
cd.. 
git init 
touch .gitignore 

इस पेस्ट .gitignore को

# Ignore all 
/* 

# But not these files... 
!.gitignore 
!*.foo 

Git स्थिति

और केवल ट्रैक न किए गए यहाँ मैं क्या करते हैं, शून्य से शुरू है फ़ाइल है .gitignore

अगर मैंने 'गिट एड' टाइप किया है। - कोई बदलाव नहीं, केवल .gitignore देखा जाता है और मेरी 2 फाइलों को नजरअंदाज कर दिया जाता है।

यह काम क्यों नहीं करता है और आप इसे कार्य करने के लिए ऊपर की प्रक्रिया को कैसे बदल सकते हैं?

यहां एक बहुत ही समान प्रश्न है जहां मुझे .gitignore फ़ाइल मिली है। मैं Git --version 1.7.7 का उपयोग कर रहा है (यह भी 1.7.3 की कोशिश की) - .gitignore to ignore all files, then recursively allows files of a certain type

+0

रुको, क्या आपने 'गिट जोड़ें' और 'गिट प्रतिबद्ध-एम' जोड़ा गिटिनोर "'? – Nic

उत्तर

96

आपका समस्या यह है कि शुरुआत में /* पैटर्न सभी फाइलों और शीर्ष स्तर पर निर्देशिका मिलान किया जाता है - testdir सहित, इसलिए testdir के अंदर सब कुछ अनदेखा किया जाता है।

यह तुम क्या चाहते है:

# Ignore everything 
* 
# Don't ignore directories, so we can recurse into them 
!*/ 
# Don't ignore .gitignore and *.foo files 
!.gitignore 
!*.foo 

जब आप इस config के साथ एक git add . करते हैं, आप खोजना चाहिए आप केवल .gitignore और *.foo सूचीबद्ध के रूप में परिवर्तन के लिए प्रतिबद्ध होना करने के लिए फ़ाइलों की है।

+0

हालांकि, एक तरफ के रूप में, मेरे असली दुनिया संस्करण में .logic फ़ाइलों के साथ, यह रहस्यमय रूप से काम नहीं करता है। मैंने गिट रेपो को फिर से बनाया है, एक लाख बार चेक किया है, वास्तव में .gitignore की प्रतिलिपि बनाई है, .logic में बदलें, ढूंढें। -नाम "* .logic" फाइलों के ढेर लौटाता है लेकिन यह .gitignore सभी * .logic फ़ाइलों को अनदेखा करता है ... कुछ बेवकूफ निश्चित रूप से चल रहा है ... शायद आखिरकार इसे फॉलो अप टिप्पणी के लायक होने पर मैं – PandaWood

+0

@ पांडावुड: सुनिश्चित करें आपके पास 'core.excludesfile'' ~/.gitconfig' में एक फ़ाइल को इंगित करने वाला सेट नहीं है जिसमें एक पैटर्न है जो आपकी '* .logic' फ़ाइलों को बहिष्कृत करेगा। – camh

+0

मुझे यह नहीं मिला, लेकिन मुझे एक इशारा दिया गया जब मैंने इन ब्लॉगर फ़ाइलों को दूसरे दिन ड्रॉपबॉक्स पर अपलोड करने का प्रयास किया, तो यह असफल रहा। एक और संकेत है, मैंने जोड़ा! *। Txt to .gitignore, क्योंकि मेरे पास कुछ टेक्स्ट फ़ाइलें हैं, और वे ट्रैक की गई सूची में दिखाई देने लगे, कोई चिंता नहीं। तो तर्क "फाइलें" (उदाहरण के लिए bla.logic) वास्तव में "पैकेज" हैं - जिन्हें आप मैक फाइंडर पर क्लिक करते हैं और "पैकेज सामग्री दिखाएं" चुनें - इसलिए * .log में gic काम नहीं कर रहा है ...मैं इन "फाइलों" को गिट में कैसे स्टोर कर सकता हूं, मेरा अगला प्रश्न हो सकता है ;-) – PandaWood

संबंधित मुद्दे