2011-04-08 6 views
16

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

मेरे पास दो कंप्यूटर हैं जहां मेरे पास मेरे भंडार और रिमोट रिपोजिटरी हैं।

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

मैंने .gitignore फ़ाइलों के बारे में पढ़ा है लेकिन मैं यह नहीं समझ सकता कि वे कैसे काम करते हैं या वे मेरे मामले में मुझे जो चीज चाहिए।

उत्तर

31

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

git update-index --assume-unchanged file 

जो Git बता देंगे भविष्य में की गई है कि फाइल में कोई भी परिवर्तन की अनदेखी करने के: at the end of this page

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

git update-index --no-assume-unchanged file 

क्या विन्यास है कि फाइल यह भंडार में एक कंकाल/उदाहरण कॉन्फ़िग फ़ाइल के लिए एक अच्छा अभ्यास हो सकता है शामिल हैं पर निर्भर करता है - पीएचपी लोग config_example.php के साथ क्या क्या के समान है, जिसका उपयोग लोगों द्वारा config.php बनाने के लिए किया जाता है, जो बदले में भंडार में कभी भी चेक नहीं किया जाता है क्योंकि इसे अनदेखा किया जाता है।

+1

'गिट अपडेट-इंडेक्स - केस्यूम-अपरिवर्तित 'मेरे लिए काम किया (' गिट' के बाद कोई हाइफ़न नहीं)। गिट संस्करण 1.8.1.2 का उपयोग करना - ओएस एक्स 10.8.2। धन्यवाद! – guapolo

+1

@guapolo पिछले अधिकांश गिट कमांड 'गिट कमांड' के बजाय 'गिट-कमांड' के रूप में थे, यही कारण है कि –

+0

उत्तर में एक हाइफ़न है लेकिन फ़ाइल को पहले ही ट्रैक किया जा चुका है। मैंने आपके गिट कमांड को --सम्यू-अपरिवर्तित विकल्प के साथ किया, और फिर मास्टर को खींचने की कोशिश की, यह अभी भी मुझे एक त्रुटि संदेश देता है: त्रुटि: 'conf.py' में आपके स्थानीय परिवर्तन विलय से ओवरराइट किए जाएंगे। निरस्त किया जा रहा। – fanchyna

6

यदि आप अपने भंडार में फ़ाइल config.local फ़ाइल को अनदेखा करना चाहते हैं, तो आप इसमें .gitignore फ़ाइल /config.local लाइन के साथ फ़ाइल बनाएं, इसे जोड़ें और भंडार में प्रतिबद्ध करें। बस।

1

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

लेकिन यदि आप पहले से ही उन फ़ाइलों को कर चुके हैं, तो खींचे जाएंगे जब आप git pull करते हैं।

आप .gitignore फ़ाइल को भंडार में भी प्रतिबद्ध कर सकते हैं। इस तरह सभी कंप्यूटरों पर एक ही फाइलों को नजरअंदाज कर दिया जाएगा।

+3

नोट की कोशिश में मदद नहीं करेगा: यदि आप कर रहे हैं * * योजना बना यह प्रतिबद्ध करने के लिए नहीं, इसके बजाय '.git/info/extrae' का उपयोग करना बेहतर है। –

+0

उस पूरक टिप्पणी के लिए धन्यवाद! –

1

शायद एक उदाहरण मदद करेगा।

# git ls-files --others --exclude-from=.git/info/exclude 
# Lines that start with '#' are comments. 
# For a project mostly in C, the following would be a good set of 
# exclude patterns (uncomment them if you want to use them): 
# *.[oa] 
# *~ 
*.pro.user.* 
tmp/ 
release/ 
debug/ 
bin/ 
moc_* 
ui_* 
*.bck 
*_debug 

#Visual Studio stuff 
lib/*.lib 
*.ncb 
*.suo 

यह सिर्फ फ़ाइल का एक हिस्सा है: यहाँ मेरी .gitignore फ़ाइल का एक वर्ग भी परियोजना फ़ाइलों का हिस्सा है। आपको अपनी परियोजना के आधार पर अपना ट्यून करना होगा।

बिंदु यह है कि प्रारूप लचीला है और आपको फ़ाइल साझा करने में समस्या नहीं होनी चाहिए। यदि आपके पास समस्याएं हैं, तो इसे भंडार से बाहर कर दें।

+0

क्या मुझे इसे रूट फ़ोल्डर में रखना होगा? – Headshota

+0

मैं आम तौर पर रूट में एक रखता हूं। और उसके बाद विशेष मामलों के लिए एक फ़ोल्डर में विशेष बनाएं जिन्हें मैं "मास्टर। गिटिनोरोर" फ़ाइल में नहीं रखना चाहता हूं। –

+0

मैंने फ़ाइल को अनदेखा किया है, लेकिन जब मैं कॉन्फ़िगरेशन फ़ाइल बदलता हूं, स्थिति में यह अभी भी उस फ़ाइल को संशोधित के रूप में दिखाता है। क्या यह होना चाहिए? – Headshota

0

कृपया ध्यान दें कि

git update-index --assume-unchanged file 

अगर आप `.gitignore` करने पर स्विच करने के लिए शाखा

$ git checkout master 
error: Your local changes to the following files would be overwritten by checkout: 
    file 
Please commit your changes or stash them before you switch branches. 
Aborting