2012-07-16 14 views
6

संभव डुप्लिकेट:
GIT: Ignoring Version-Controlled Filesगिट में मौजूदा, प्रतिबद्ध फाइलों को अनदेखा कैसे करें?

.gitignore Stackoverflow पर अधिक के लिए उत्तर के बहुत सारे हैं, फिर भी मैं नहीं मिला है एक जवाब:

मैं एक मौजूदा Git परियोजना है, एक readme.md और sample_folder/ के साथ, दोनों शीर्ष-स्तर पर। मैं इन्हें सामान्य रूप से अपने गिट (हब) भंडार से हटाना चाहता हूं। लेकिन मैं उन्हें अनदेखा करना चाहता हूं, यानी, उन्हें एक निश्चित क्लोन स्थानीय भंडार में, यानी तैनाती मशीन पर खींचने से रोकना है।

.gitignore मुझे समझ में आता है, केवल गैर-प्रतिबद्ध फ़ाइलों को अनदेखा करने के बारे में है? सच कहूं, मैं छुपा के आसपास कुछ भी नहीं है (पुल से + प्रतिबद्ध) सामान कि पहले से ही प्रतिबद्ध है ...

ख़ामख़ाह के दिनों मैं सरल संबंधित 'ग्राहक कल्पना' से बाहर हैं में (जो सुंदर एक स्थानीय रूप से क्लोन रेपो के पास):

//whatever/myProject 
-//whatever/myProject/readme.md 
-//whatever/myProject/sample_folder 

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

इसके अलावा, मैं git rm --cached लगता है जब भी मैं ऐसा करता है (जो भी मेरे 'तैनाती रेपो' से अब और फिर हो सकता है) ...

+0

आपकी समस्या को समझना मुश्किल है ... आप फ़ाइलों को खींचने की फाइल क्यों नहीं लेना चाहेंगे? मैं परेशानी के स्रोत की कल्पना कर सकता हूं, क्योंकि सभी रिपो एक ही राज्य में नहीं होंगे जबकि एक ही प्रतिबद्ध – CharlesB

+0

ठीक है, किसी भी इंटरस्टेड/डेवलपर व्यक्ति के लिए यह एक नमूना_फोल्डर (या दस्तावेज़-फ़ोल्डर या रीडमे) होना उपयोगी होता है। , तैनाती परिदृश्य में इनमें से कोई भी सतही है, शायद समस्याग्रस्त भी ... –

+0

@Wooble: यह बहुत ही आशाजनक लगता है! बहुत बहुत धन्यवाद। जांच करेगा। –

उत्तर

0

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

2

ऐसा लगता है कि आप अपनी तैनाती विधि के रूप में गिट चेकआउट का उपयोग कर रहे हैं। कभी-कभी यह काम करता है, कभी-कभी इसे थोड़ा और चाहिए। यदि भंडार में विकास कलाकृतियों हैं, तो आपको थोड़ा और चाहिए।

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

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

आप विकास और तैनाती के बीच एक कदम चाहते हैं जिसमें आप अपने परिवर्तनों पर विचार और परीक्षण कर सकते हैं। यदि कुछ और नहीं है, तो यह डेवलपर ए को खराब परिवर्तन और व्यवस्थापक बी को अनजाने में उत्पादन में खींचकर गलती को जोड़ता है। आप भी विकास के लिए दबाव डालने में सक्षम होना चाहते हैं और बिना किसी डेवलपर्स के अपने काम को अन्य डेवलपर्स के साथ साझा करने में सक्षम होना चाहते हैं।

आप अभी भी एक व्यक्ति हो सकता है जो विकास और तैनाती को संभालने वाला हो, लेकिन आप बाद में नहीं हो सकते हैं। यदि कुछ और नहीं है, तो यह आपके आप को गलती से विकास में अस्थिर परिवर्तन को धक्का देने से बचाता है और उसके बाद सोचने का मौका मिलने से पहले उस गलती को तैनाती में खींच कर रखता है।

+0

गंभीर रिलीज के लिए निश्चित रूप से निश्चित रूप से एक 'स्थिर' शाखा होगी। लेकिन मेरे त्वरित और गंदे 'परिनियोजन' के लिए मैं बहुत प्रयास कर रहा हूं - प्रतिकूल :) और मैं छोटे फिक्स को वापस धक्का देना चाहता हूं (कई फर्जी परिवर्तनों को देखे बिना, यानी वे सभी हटाना, भले ही मैं उन्हें मंच में नहीं जोड़ूं)। मैं ऊपर Wooble की टिप्पणी की जांच करेंगे ... –

5

शायद मुझे प्रश्न गलत हो गया है, लेकिन क्या आपकी समस्या हल नहीं होगी?

git rm --cached readme.md sample_folder/* 
echo "readme.md" >>.gitignore 
echo "sample_folder/*" >>.gitignore 
git commit -am "Untracked some files" 
संबंधित मुद्दे