git - studio - .गरिग्नोर सभी फाइलों को अनदेखा करते हैं फिर*.foo की अनुमति देते हैं



gite (1)

इस तरह के पहले से ही कई सवाल हैं, लेकिन कोई भी जवाब मेरे लिए काम नहीं करता है।

मैं * .foo के साथ फ़ाइलों को छोड़कर अपने भंडार के नीचे के फ़ोल्डरों में सब कुछ अनदेखा करना चाहता हूं

(अगर कोई सोच रहा है कि यह कैसे उचित हो सकता है - मैं वास्तव में मैक पर मेरी सभी "लॉजिक" परियोजनाओं - संगीत सॉफ्टवेयर के लिए एक गिट रिपॉजिटरी बना रहा हूं - लेकिन मैं केवल वास्तविक प्रोजेक्ट फ़ाइलों को संग्रहीत करना चाहता हूं। *

मैं इसे टटोलने जा रहा हूं, इसलिए हम सब एक ही थाली में हैं। यहाँ मैं क्या कर रहा हूँ, खरोंच से शुरू:

सेट अप:

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

गिट स्थिति

और केवल अनट्रेक्ट की गई फ़ाइल .gitignore है

अगर मैंने 'git add' टाइप किया है। - कोई परिवर्तन नहीं, केवल .itignore देखा जाता है और मेरी 2 फ़ाइलों को अनदेखा किया जाता है।

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

यहाँ अत्यंत समान प्रश्न है जहाँ मुझे .gitignore फ़ाइल मिली है। मैं git --version 1.7.7 का उपयोग कर रहा हूं (1.7.3 भी आज़माया गया) - .ignignore सभी फ़ाइलों को अनदेखा करने के लिए, फिर एक निश्चित प्रकार की फ़ाइलों की पुनरावृत्ति की अनुमति देता है


Answer #1

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

ये वो है जो तुम चाहते हो:

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

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






git