2012-03-20 11 views
171

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

उदाहरण के लिए, मैं इस फ्रेमवर्क की एक नई स्थापना को नए क्लाइंट में तैनात करता हूं, मैं निम्नलिखित फाइलों को डाउनलोड करना चाहता हूं (उनके पास डिफ़ॉल्ट मान चेंजमे हैं) और मुझे बस इस क्लाइंट के लिए विशिष्ट परिवर्तन करना है (डेटाबेस प्रमाण-पत्र, ईमेल पता जानकारी, कस्टम सीएसएस)।

// the production config files i want the files but they need to be updated to specific client needs 
application/config/production/config.php 
application/config/production/database.php 
application/config/production/tank_auth.php 
// index page, defines the environment (production|development) 
/index.php 
// all of the css/js cache (keep the folder but not the contents) 
/assets/cache/* 
// production user based styling (color, fonts etc) needs to be updated specific to client needs 
/assets/frontend/css/user/frontend-user.css 

वर्तमान में अगर मैं

git clone [email protected]:user123/myRepo.git httpdocs 

चलाने के लिए और फिर ऊपर फ़ाइलों को संपादित, सभी महान है। जब तक मैं एक हॉटफिक्स या पैच जारी नहीं करता और git pull चलाता हूं। मेरे सभी परिवर्तन तब ओवरराइट किए जाते हैं।

+2

संभव डुप्लिकेट [गिट: फ़ाइल जिसे वितरित किया जाना चाहिए, लेकिन अनदेखा/पुनः अपलोड नहीं किया गया है?] (http://stackoverflow.com/questions/5586267/git-file-that-must-be- वितरित-but-ignored-not-reuploaded) – Daenyth

+2

संभावित गलती [git: क्या मैं एक फाइल कर सकता हूं और सामग्री परिवर्तनों को अनदेखा कर सकता हूं ?] (http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-the-content-changes) – CharlesB

+0

[git: का संभावित डुप्लिकेट: क्या मैं एक फ़ाइल कर सकता हूं और सामग्री परिवर्तनों को अनदेखा करें?] (http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-the-content-changes) –

उत्तर

45

मेरी कोड आग लगनेवाला परियोजनाओं के लिए, मैं database.php.example और रेपो में config.php.example रहते हैं।

तब मैं config.php जोड़ने और अनुप्रयोगों/config/.gitignore फाइल करने के लिए database.php

तो, आखिरकार, जब मैं तैनाती करता हूं, तो मैं .example फ़ाइलों (config.php और डेटाबेस.php पर) की प्रतिलिपि बना सकता हूं, उन्हें अनुकूलित कर सकता हूं, और उन्हें जीआईटी द्वारा ट्रैक नहीं किया जाएगा।

+9

अच्छे समाधान पर जाते हैं, लेकिन मुझे लगता है कि नासीरखन का जवाब सबसे अच्छा है। – wordsforthewise

+0

यह एक अच्छा समाधान नहीं है। यदि आप अपनी गिट इंडेक्स को फ्लश करते हैं तो आप परिवर्तनों को ट्रैक करना शुरू कर देंगे जब आपका मतलब नहीं है। ऐसा करने के सही तरीके के लिए @ नसीरखान उत्तर देखें। –

+1

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

2

मैं उन्हें .gitignore फ़ाइल में डाल दूंगा और बस आवश्यकतानुसार उन्हें मैन्युअल रूप से कॉपी करूँगा।

तो कंकाल फ़ाइल नाम गिट में होगा, अनदेखा फ़ाइल नाम गिट में नहीं होंगे (लेकिन .gitignore में होगा)। इस तरह, जब उन्हें 'टेम्पलेट' से 'वास्तविक' में कॉपी करने के लिए मैन्युअल चरण (शायद कंकाल से बेहतर नाम) किया जाता है तो उन्हें तुरंत अनदेखा कर दिया जाता है।

+0

उन्हें जोड़ने के लिए कोई रास्ता नहीं है पहले repo, और फिर उन्हें .gitignore में जोड़ें? यह बहुत अच्छा होगा अगर फाइलों को शामिल करने के लिए कोई समाधान था लेकिन किसी निश्चित प्रतिबद्धता या कुछ के बाद कोई बदलाव नहीं हुआ। – gorelative

+1

@mklauber मैं उन्हें अनिश्चित काल तक रखना चाहता हूं जब तक कि मैं 'git rm ' चलाता हूं। उद्देश्य आईई है: एक config.php फ़ाइल। मैं कॉन्फ़िगरेशन फ़ाइल रखना चाहता हूं लेकिन मैं स्पष्ट रूप से क्लाइंट से ग्राहक के डेटाबेस प्रमाण-पत्रों को ट्रैक करना नहीं चाहता क्योंकि वे अलग हैं। – gorelative

+1

हां, मुझे हमारे रेल डेटाबेस.आईएमएल फ़ाइल के साथ समस्या है। हम एक कंकाल रखते हैं और फिर इसे कॉपी और बदलते हैं। –

380

गिट के पास ऐसा करने का एक अलग समाधान है। सबसे पहले फ़ाइल को बदलने आप पर नज़र रखी जा नहीं करना चाहती और निम्न आदेश का उपयोग:

git update-index --assume-unchanged FILE_NAME 

और यदि आप परिवर्तन ट्रैक करना चाहते हैं फिर से इस आदेश का उपयोग करें:

git update-index --no-assume-unchanged FILE_NAME 

git-update-index documentation

+0

मैंने जो कहा वह मैंने किया लेकिन गिट स्टेटस फ़ाइल को संशोधित करता रहता है – rraallvv

+0

मेरे लिए ठीक काम करता है। क्या आपने कोशिश की जब "फ़ाइल को चिह्नित करने में असमर्थ ..." कहने पर एक संदेश मिला? – shim

+0

यहां पर काम करता है - आखिरकार मेरी 2-चरण परिनियोजन निरंतर अनचाहे परिवर्तन नहीं करेगा। धन्यवाद @ नसीरखान !!! –

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