2011-03-25 9 views
21

क्या यह संभव है? कल्पना कीजिए कि मेरे पास माता-पिता & बच्चे हैं। दोनों गिट रेस्पॉजिटरी हैं। बच्चा माता-पिता का सबमिशन है।एक गिट सबमिशन संपादित करना

मैं बाल जनक & के अंदर है कि के संस्करण में संपादन के लिए प्रतिबद्ध & उन्हें सिर्फ एक नियमित रूप से भंडार की तरह धक्का कर सकते हैं?

या क्या मुझे कहीं बच्चे के अलग क्लोन की आवश्यकता है जिससे मैं परिवर्तन कर सकूं?

धन्यवाद।

+0

यह भी देखें कि पहले चेकआउट करने पर http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC

उत्तर

26

आपको एक अलग क्लोन की आवश्यकता नहीं है। उप-मॉड्यूल फ़ोल्डर स्वयं की एक दुनिया है। बस अपने दिल की खुशी को संपादित करें, प्रतिबद्ध करें, शाखा बनाएं और धक्का दें।

गिट इस तरह से महान है। :-)

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

महत्वपूर्ण नोट:

सुनिश्चित करें कि आप पहले अपने शुरू हैकिंग git checkout master (या कुछ अन्य शाखा) उप मॉड्यूल फ़ोल्डर के अंदर करना सुनिश्चित करें।

फिर यह भी सुनिश्चित करें कि जब आप उप-मॉड्यूल की अद्यतन स्थिति को प्रतिबद्ध करते हैं, तो आप या तो push जो सार्वजनिक रिपो में काम करते हैं, या कम से कम आप उप-मॉड्यूल के अंदर इतिहास को पुनर्जीवित नहीं करते हैं या अन्यथा नहीं बदलते हैं बाद में - क्योंकि यह सब-मॉड्यूल के इतिहास के माता-पिता के संदर्भ को दूषित कर देगा।

देखभाल के साथ चलना। (Hat अनुस्मारक के लिए @pjmorse को टिप।)

मुनाफा:

हां। एक सबमिशन फ़ोल्डर के भीतर विकसित करना संभव और अक्सर सुविधाजनक है लेकिन इसके जोखिमों के बिना नहीं। अपने विकास मॉडल बुद्धिमानी

+1

+1 देखें। साथ ही, आप यह सुनिश्चित करना चाहते हैं कि शाखाओं को स्विच करने या माता-पिता में अन्य काम करने से पहले आपके पास एक साफ बाल रेपो (किसी भी बदलाव के साथ) है। –

+0

माता-पिता पर सरल दिन-प्रतिदिन (संपादित, प्रतिबद्ध, खींचें, पुश) काम करते समय माता-पिता रेपो में काम करते समय उप-मॉड्यूल में असामान्य परिवर्तनों के साथ समस्याओं में कोई समस्या नहीं आई है। स्विचिंग शाखाएं और सबमिशन अपडेट ऑपरेशंस खतरनाक साबित हो सकते हैं, हालांकि। अच्छी बात! –

+0

क्लोन में विकसित करना बुरा विचार नहीं है, केवल अलग-अलग सिर के साथ गलती से किए गए अवसरों को कम करने के लिए। आप निश्चित रूप से स्वयं को जांचने के लिए हुक का भी उपयोग कर सकते हैं। – Cascabel

4

चुनें documentation के अनुसार:

आप एक submodule के भीतर एक परिवर्तन करना चाहते हैं, तो आपको पहले बाहर एक शाखा की जांच होनी चाहिए, अपने परिवर्तन करें, submodule के अंदर परिवर्तन प्रकाशित करते हैं, और उसके बाद नई प्रतिबद्धता को संदर्भित करने के लिए सुपरप्रोजेक्ट अपडेट करें।

जैसा कि मैं कह सकता हूं, यदि आप उस शाखा पर काम कर रहे हैं जहां सबमिशन जोड़ा गया था, तो आप बच्चे को संपादित कर सकते हैं और अपने भंडार में वापस धक्का दे सकते हैं। लेकिन यदि आप ऐसे डेवलपर नहीं हैं जिन्होंने बाल से माता-पिता को जोड़ा है, तो आप एक अलग सिर के साथ काम कर रहे हैं और परिवर्तन करने के लिए या तो परिवर्तन करने और पैच निर्यात करने के लिए बच्चे के एक अलग संस्करण की जांच करने की आवश्यकता होगी (git format-patch का उपयोग करके) किसी और के लिए प्रतिबद्ध करने के लिए (git am के माध्यम से)।

+0

"मास्टर" बहुत अच्छी तरह से शाखा हो सकती है जिसे आप चेक आउट करते हैं। लेकिन आप एक अच्छा मुद्दा बनाते हैं! –

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