2015-11-16 6 views

उत्तर

25

गिट दो स्थानों पर submodules के बारे में जानकारी स्टोर करता है। पहला .gitmodules नामक फ़ाइल में है, जिसे गिट रिपॉजिटरी में चेक किया गया है। इस फ़ाइल में परिवर्तन अन्य भंडारों के लिए प्रचारित होते हैं।

अन्य स्थान .git/config में है, और यह वह जगह है जहां अधिकांश आदेश करने पर गिट वास्तव में दिखता है।

तो कल्पना करें कि आपने थोड़ी देर के लिए एक परियोजना पर काम किया है, और foo नामक एक सबमिशन है। इस सबमिशन के लिए फ़ाइलें कुछ यूआरएल से जांच की जाती हैं, इससे वास्तव में कोई फर्क नहीं पड़ता। कुछ बिंदु पर, हालांकि, यह यूआरएल बदलता है। शायद यह बदलता है ताकि सबमिशन एक अलग सर्वर, या एक अलग पथ या जो भी हो, से चेक आउट हो। जब आप अपनी रिपॉजिटरी अपडेट करते हैं तो आप .gitmodules फ़ाइल की प्रति अपडेट हो जाएंगे, लेकिन आपकी .git/config फ़ाइल नहीं होगी; आप अभी भी पुराने यूआरएल से जांच कर रहे होंगे। जब आप नए यूआरएल से जांचना शुरू करना चाहते हैं, तो .gitmodules से .git/config पर नई कॉन्फ़िगरेशन की प्रतिलिपि बनाने के लिए आप git submodule sync चलाएंगे। गिट स्वचालित रूप से ऐसा नहीं करता है क्योंकि आपने अपनी कॉन्फ़िगरेशन में अपना परिवर्तन किया हो सकता है, और यह उन्हें ओवरराइट नहीं करना चाहेंगे।

+0

मुझे आश्चर्य है कि मुझे मैन्युअल रूप से '.gitmodules' में लिंक को बदलने की आवश्यकता है, तो वही चीज़ मैन्युअल रूप से '.git/config' में बदलने का कारण नहीं है? या एक आदेश होगा जो दो स्थानों में बदल जाएगा? – Narek

+0

कोई आदेश नहीं है जो मुझे पता है कि 'गिट सबमिशन एड' के अलावा, दोनों में एक ही बार में परिवर्तन होता है जिसका उपयोग नए सबोड्यूल जोड़ने के लिए किया जा सकता है लेकिन मौजूदा में नहीं बदला जा सकता है। – db48x

+0

मेरा मतलब है कि यह मेरे लिए अजीब बात है कि एक ही स्थान पर आपको मैन्युअल रूप से बदलना होगा और दूसरे में इसे कमांड द्वारा बदला जा रहा है, आपको क्या लगता है? – Narek

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