अगर मैं एक सबमॉड्यूल को संशोधित करता हूं, तो क्या मैं कमोडल मूल के लिए प्रतिबद्ध वापस धक्का दे सकता हूं, या क्या इसके लिए क्लोन की आवश्यकता होगी? यदि क्लोन, क्या मैं किसी अन्य रिपॉजिटरी के अंदर एक क्लोन स्टोर कर सकता हूं?
अगर मैं एक सबमॉड्यूल को संशोधित करता हूं, तो क्या मैं कमोडल मूल के लिए प्रतिबद्ध वापस धक्का दे सकता हूं, या क्या इसके लिए क्लोन की आवश्यकता होगी? यदि क्लोन, क्या मैं किसी अन्य रिपॉजिटरी के अंदर एक क्लोन स्टोर कर सकता हूं?
जवाबों:
एक सबमॉड्यूल कुछ और नहीं बल्कि कुछ अतिरिक्त मेटा डेटा (gitlink ट्री एंट्री, .itmodules फ़ाइल) के साथ एक अन्य रेपो के भीतर git रेपो का एक क्लोन है।
$ cd your_submodule
$ git checkout master
<hack,edit>
$ git commit -a -m "commit in submodule"
$ git push
$ cd ..
$ git add your_submodule
$ git commit -m "Updated submodule"
gh-pagesएक github रेपो पर प्रलेखन के लिए एक शाखा के साथ काम कर रहे :) :)
ध्यान दें कि चूंकि git1.7.11 ( [ANNOUNCE] Git 1.7.11.rc1 और रिलीज़ नोट , जून 2012) का उल्लेख है:
"
git push --recurse-submodules" सुपरप्रोजेक्ट से बंधे सबमोड्यूल्स के इतिहास को वैकल्पिक रूप से देखना और उन्हें बाहर धकेलना सीखा।
संभवतः इस पैच और --on-demandविकल्प के बाद:
recurse-submodules=<check|on-demand>::
सुनिश्चित करें कि जिन सबमॉड्यूल्स का उपयोग संशोधनों के द्वारा किया गया है, वे दूरस्थ ट्रैकिंग शाखा पर उपलब्ध हों।
- यदि
checkइसका उपयोग किया जाता है, तो यह जांचा जाएगा कि सभी सबमॉड्यूल कमिट करते हैं जिन्हें धकेल दिए जाने वाले संशोधनों में बदल दिया गया है जो रिमोट पर उपलब्ध हैं।
अन्यथा धक्का निरस्त कर दिया जाएगा और गैर-शून्य स्थिति के साथ बाहर निकल जाएगा।- यदि
on-demandउपयोग किया जाता है, तो सभी सबमॉड्यूल्स जो धकेलने के लिए संशोधन में बदल जाते हैं, धकेल दिए जाएंगे।
यदि ऑन-डिमांड सभी आवश्यक संशोधनों को आगे बढ़ाने में सक्षम नहीं थी, तो इसे गैर-शून्य स्थिति के साथ निरस्त और बाहर कर दिया जाएगा।
तो आप सब कुछ एक साथ (मूल रेपो से) धक्का दे सकते हैं:
git push --recurse-submodules=on-demand
यह विकल्प केवल एक स्तर के घोंसले के शिकार के लिए काम करता है। किसी अन्य सबमॉड्यूल के अंदर सबमॉड्यूल में परिवर्तन को धक्का नहीं दिया जाएगा।
जीआईटी 2.7 (जनवरी 2016) के साथ, पैरेंट रेपो ... और इसके सभी सबमॉड्यूल्स को धकेलने के लिए एक साधारण गिट पुश पर्याप्त होगा ।
कमिट d34141c देखें , f5c7cd9 (03 दिसंबर 2015), प्रतिबद्ध f5c7cd9 (03 दिसंबर 2015), और माइक क्रो ( ) द्वारा b33a15b (17 नवंबर 2015 ) देखें । ( जूनियो सी हमानो द्वारा विलय - - में 5d35d72 , 21 दिसंबर 2015)mikecrowe
gitster
push:recurseSubmodulesconfig विकल्प जोड़ें
--recurse-submodulesकमांड लाइन पैरामीटर कुछ समय के लिए ही अस्तित्व में है, लेकिन यह कोई कॉन्फ़िग फ़ाइल बराबर है।के लिए इसी पैरामीटर की शैली के बाद
git fetch, आइएpush.recurseSubmodulesइस पैरामीटर के लिए एक डिफ़ॉल्ट प्रदान करने के लिए आविष्कार करें।
आवश्यकता--recurse-submodules=noहोने पर कमांड लाइन पर कॉन्फ़िगरेशन को अनुमति देने के लिए इसके अतिरिक्त की आवश्यकता होती है।इसे लागू करने का सबसे सीधा तरीका एक समान तरीके से
pushउपयोग कोड बनाना प्रतीत होताsubmodule-configहैfetch।
git configदस्तावेज़ अब शामिल :
push.recurseSubmodules:सुनिश्चित करें कि जिन सबमॉड्यूल्स का उपयोग संशोधनों के द्वारा किया गया है, वे रिमोट-ट्रैकिंग शाखा पर उपलब्ध हैं।
- यदि मान '
check' है, तो Git यह सत्यापित करेगा कि सभी सबमॉड्यूल कमिट करता है कि जिन संशोधनों को धकेल दिया जाना है, वे सबमॉडल के कम से कम एक रिमोट पर उपलब्ध हैं। यदि कोई कमिट गायब है, तो पुश को निरस्त कर दिया जाएगा और गैर-शून्य स्थिति के साथ बाहर निकल जाएगा।- यदि मान '
on-demand' है, तो धकेल दिए जाने वाले संशोधनों में परिवर्तित होने वाले सभी सबमॉड्यूल को धकेल दिया जाएगा। यदि ऑन-डिमांड सभी आवश्यक संशोधनों को आगे बढ़ाने में सक्षम नहीं थी, तो इसे गैर-शून्य स्थिति के साथ निरस्त और बाहर कर दिया जाएगा। -- यदि मान '
no' है तो धकेलने को बनाए रखने पर सबमोड्यूल्स की अनदेखी करने का डिफ़ॉल्ट व्यवहार।आप '
--recurse-submodules=check|on-demand|no' को निर्दिष्ट करके पुश के समय इस कॉन्फ़िगरेशन को ओवरराइड कर सकते हैं ।
इसलिए:
git config push.recurseSubmodules on-demand
git push
Git 2.12 (Q1 2017)
git push --dry-run --recurse-submodules=on-demand वास्तव में काम करेगा।
देखें प्रतिबद्ध 0301c82 , प्रतिबद्ध 1aa7365 (17 नवंबर 2016) द्वारा ब्रैंडन विलियम्स ( mbrandonw) ।
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 12cf113 , 16 दिसंबर 2016)
push run with --dry-runवास्तव में नहीं है (Git 2.11 Dec 2016 और निम्न / पहले) एक सूखी-रन करें जब सबमोडुल्स इन-डिमांड पुश करने के लिए पुश कॉन्फ़िगर किया गया हो।
इसके बजाय सभी सबमोडुल्स जिन्हें धकेलने की आवश्यकता होती है, वास्तव में उनके रिमोट में धकेल दिए जाते हैं जबकि सुपरप्रोजेक्ट के लिए कोई भी अपडेट ड्राई-रन के रूप में किया जाता है।
यह एक बग है और न कि सूखा चलाने का इरादा व्यवहार।जब सबमोडुल्स को 'ऑन-डिमांड' पुन: पुश करने के लिए कॉन्फ़िगर करने पर विकल्प
pushका सम्मान करना सिखाएं--dry-run।
यह--dry-runबाल प्रक्रिया को ध्वज को पारित करके किया जाता है जो एक सूखी-रन का प्रदर्शन करते समय एक सबमॉड्यूल के लिए एक धक्का देता है।
और अभी भी Git 2.12 में, आप अब शीर्ष स्तरीय सुपरप्रोजेक्ट को धकेलने के बिना सबमॉड्यूल्स को धकेलने के लिए--recurse-submodules=only " havea " विकल्प चुनते हैं ।
देखें 225e8bf प्रतिबद्ध , 6c656c3 प्रतिबद्ध , प्रतिबद्ध 14c01bd द्वारा (19 दिसंबर 2016) ब्रेंडन विलियम्स ( mbrandonw) ।
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 792e22e , 31 जनवरी 2017)
git config push.recurseSubmodules on-demand। फिर एक साधारण सब कुछ (मुख्य रेपो और सबमॉड्यूल्स)git pushको पुश करने के लिए पर्याप्त होगा । देखें नीचे मेरी संपादित जवाब ।