2016-02-29 10 views
5

मेरी मशीन पर, मैंने --skip-worktreeconfig/database.yml पर सेट किया है।किसी अन्य शाखा से --skip-worktree के साथ फ़ाइलों में परिवर्तनों को संभालना

git update-index --skip-worktree config/database.yml 

एक और डेवलपर प्रतिबद्ध है और config/database.yml को विकसित शाखा परिवर्तन में विलय कर दिया है, जबकि परियोजना पर काम कर चुका है।

अब, जब मैं git pull origin develop करते हैं, मैं

Andrews-Air:[project] agrimm$ git pull origin develop 
From bitbucket.org:[company]/[project] 
* branch   develop -> FETCH_HEAD 
Updating [SHA]..[Another SHA] 
error: Your local changes to the following files would be overwritten by merge: 
    config/database.yml 
Please, commit your changes or stash them before you can merge. 
Aborting 

मैं इस तरह के एक परिवर्तन संभाल चाहिए कैसे मिल सकता है? मुझे

git update-index --no-skip-worktree config/database.yml 
git stash save "Save changes to config/database.yml" 
git pull origin develop 
git stash apply 
# Fix any conflicts 
git update-index --skip-worktree config/database.yml 

या क्या कम हैकी दृष्टिकोण है?

+0

इस बारे में 100% निश्चित नहीं है, लेकिन मुझे संदेह है कि आपके स्किप-वर्क्री उपयोग पर गिट देने से मुझे नौकरी मिल जाएगी। 'printf '% s \ n' '*' '! config/डेटाबेस/yml'> .git/info/sparse-checkout; गिट कॉन्फ़िगर core.sparsecheckout true', और चूंकि आप पहले ही स्किप-वर्कट्री जला चुके हैं जो पर्याप्त होना चाहिए। – jthill

उत्तर

2

यह एक हैकी दृष्टिकोण नहीं है। वास्तव में यह वास्तव में आपको इस स्थिति में क्या करने की ज़रूरत है। चलो कदम से परिदृश्य कदम के माध्यम से चलो। (जिस तरह से यह कुछ मान्यताओं को बना रहा है क्योंकि यह एक वाईएमएल फ़ाइल है।)

आप फ़ाइल को अनदेखा कर रहे हैं क्योंकि आपके पास ऐसे परिवर्तन हैं जो केवल आपकी स्थानीय निर्माण प्रक्रिया को प्रभावित करते हैं और आकस्मिक रूप से उन परिवर्तनों को दूसरों को और संभावित रूप से धक्का नहीं देना चाहते हैं उन्हें प्रभावित करें या, फिर भी खराब, उत्पादन। एक काफी सामान्य और अच्छी प्रैक्टिस।

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

आप सक्रिय रूप से फ़ाइल को अनदेखा कर रहे हैं, इसलिए आपको इसके बारे में फिर से देखभाल करने के लिए गिट बताना होगा। अन्यथा कोई गिट प्रक्रिया फ़ाइल को नहीं देखेगी।

git update-index --no-skip-worktree config/database.yml 

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

git stash save "Save changes to config/database.yml" 

आप अंत में अपने स्थानीय में रिमोट से परिवर्तन ला सकता है डाली। जब आप मूल त्रुटि प्राप्त करते हैं तो आप पहले से ही प्राप्त कर चुके हैं, इसलिए आप विलय भी कर सकते हैं। तो:

git pull origin develop 
-or- 
git merge origin/develop 

अब आप तारीख तक कर रहे हैं, लेकिन आप अभी भी उन अपडेट यह स्थानीय स्तर पर काम करने के, तो उन्हें हमारे सुरक्षित भंडारण जगह से वापस जाना चाहता हूँ:

git stash pop 

नहीं हैं, तो कोई भी संघर्ष, आप उन्हें हल कर सकते हैं और सुनिश्चित कर सकते हैं कि नए बदलाव को एकीकृत करने के बाद आपकी परियोजना सही ढंग से निर्माण करेगी।

अंत में, हम अन्य उपयोगकर्ताओं को हमारे स्थानीय परिवर्तनों से फिर से सुरक्षित रखना चाहते हैं, इसलिए हम पथ पर स्किप-वर्कट्री ध्वज को बहाल करते हैं।

git update-index --skip-worktree config/database.yml 

और हम कर रहे हैं।

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

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