2012-01-17 6 views
5

मैंने प्रोजेक्ट की निर्देशिका में एक संग्रह बनाया है। मैंने सभी फाइलें जोड़ दी हैं और कुछ काम किया है। फिर मैंने प्रोजेक्ट और रिपोजिटरी में नई फाइलें जोड़ दीं। उसके बाद मैं पहले संस्करण में लौट आया और अब मैं अंतिम संस्करण में अपडेट नहीं कर सकता। hg update tip के बाद मुझे यह संदेश मिल रहा है:नई फाइलें जोड़ने के बाद Mercurial में अंतिम संस्करण को कैसे अपडेट करें?

abort: untracked file in working directory differs from file in requested 
revision: '.DS_Store' 

मैं Mercurial के लिए नया हूँ। मैं इसे कैसे ठीक करूं?

उत्तर

12

इसका मतलब है कि Mercurial यह सुनिश्चित करने के बारे में अनिश्चित है कि क्या करना है। आपके पास कार्यशील प्रतिलिपि में something सामग्री वाली एक फ़ाइल है। फ़ाइल संस्करण नियंत्रित नहीं है, इसलिए जब आप अपडेट करते हैं तो Mercurial आमतौर पर इसे अकेला छोड़ देगा। हालांकि, जिस संशोधन को आप पर अपडेट कर रहे हैं, में एक ही नाम वाली फ़ाइल है, और से अलग-अलग फ़ाइल में आपके पास पहले से मौजूद है।

आप अब आप दो संशोधन हो, तो आप

$ hg init 
$ echo "a file" > a 
$ hg add a 
$ hg commit -m "added a" 
$ echo "b file" > b 
$ hg add b 
$ hg commit -m "added b" 

कर इस समस्या को प्राप्त कर सकते हैं, नवीनतम फ़ाइलें a और b है। तुम वापस पहले संशोधन पर अपडेट करें और किसी भिन्न फ़ाइल b बनाने हैं, तो आप मुसीबत मिलती है:

$ hg update 0 
$ echo "other b file" > b 
$ hg update 
abort: untracked file in working directory differs from file in requested 
revision: 'b' 

सामान्य समाधान अद्यतन करने से पहले प्रतिबद्ध करने के लिए है। आपको आम तौर पर एक गंदे काम करने वाली प्रति के साथ अद्यतन नहीं करना चाहिए ("गंदे" का अर्थ है कि hg status खाली नहीं है)। Mercurial ऐसे अपडेट का समर्थन करता है, लेकिन आपको केवल तभी उपयोग करना चाहिए यदि आप जानते हैं कि आप क्या कर रहे हैं।

इसलिए उदाहरण के जारी रखने के लिए ऊपर हम नए b प्रतिबद्ध कर सकते हैं या तो और फिर विलय:

$ hg add b 
$ hg commit -m "added new b" 
$ hg merge 

यह b में एक संघर्ष देता है के बाद से दो संस्करणों b file और other b file होते हैं, क्रमशः। संघर्ष को हल करें और प्रतिबद्ध करें:

$ hg commit -m "merged two bs" 

कार्य विकल्प से फ़ाइल को हटाना एक विकल्प है। यही वह है जो मैं आपके मामले में करूँगा:.DS_Store फ़ाइलों को पहली जगह ट्रैक नहीं किया जाना चाहिए। वे मैक ओएस एक्स पर कुछ फ़ोल्डर जानकारी संग्रहीत करते हैं और यह आपके स्रोत कोड का हिस्सा नहीं है। तो आप

$ rm .DS_Store 
$ hg update 

अद्यतन ने .DS_Store फ़ाइल को पुनरुत्थित किया। अब आप यह है कि यह फ़ाइल ट्रैकिंग बंद कर देना चाहिए मर्क्युरियल बताना चाहता हूँ:

$ hg forget .DS_Store 

और आप भी अब से ऐसी फ़ाइलों की अनदेखी करने के मर्क्युरियल बताना चाहता हूँ:

$ echo "syntax: glob" >> .hgignore 
$ echo ".DS_Store" >> .hgignore 
$ hg commit -m "removed .DS_Store file, ignored from now on" 
+1

आप इस तरह के विस्तृत जवाब के लिए बहुत बहुत धन्यवाद ! – Andrew

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