2013-02-27 7 views
14

मेरे पास एकाधिक सबोड्यूल के साथ एक गिट रेपो है। उन submodules में से एक के अपने स्वयं के एकाधिक submodules है। मैं बस इतना करना चाहता हूं कि मास्टर रेपो पर पुरानी प्रतिबद्धता की जांच करें और उस समय कोड की सही स्थिति प्राप्त करने के लिए सभी सबोडोड्यूल से उचित प्रतिबद्धता जांचें।पुरानी गिट प्रतिबद्धता को कैसे जांचें, जिसमें सभी सबोड्यूल्यूल शामिल हैं?

मुझे पता है कि गिट में ls-tree कमांड के रूप में आवश्यक जानकारी शामिल है जो मुझे बता सकता है कि प्रत्येक सबमिशन किस पर था। हालांकि, मुझे मैन्युअल रूप से प्रत्येक को जांचना है, जो दर्दनाक समय लेने वाला है।

मैं git checkout --recursive जैसे कुछ ढूंढ रहा हूं लेकिन ऐसा आदेश मौजूद नहीं है।

क्या ऐसा करने के लिए वैसे भी है?

+0

नोट: 'गिट चेकआउट - रिकर्स-सबोड्यूल्यूल 'वास्तव में आजकल (2017) मौजूद है। लेकिन केवल आगामी गिट 2.14 इसे ठीक से काम करेगा। [नीचे मेरा जवाब] देखें (https://stackoverflow.com/a/44249558/6309)। – VonC

उत्तर

17

आप इस लक्ष्य को हासिल करने के लिए दो आदेशों की जरूरत है:

git checkout *oldcommit* 
git submodule update --recursive 
+1

बहुत बहुत धन्यवाद! बेशक यह कुछ आसान साबित हुआ। –

4

पुराने चेकआउट में अधिक submodules हैं या नहीं, के आधार पर आप submodules है कि वहाँ किसी भी अधिक नहीं हैं प्रारंभ करने में निम्न करने के लिए हो सकता है नई प्रतिबद्ध:

git checkout *oldcommit* 
git submodule init 
git submodule update --recursive 
6

नोट: यदि आप कई submodules (और submodules अंदर submodules) है, Git 2.14 (Q3 2017) में मदद मिलेगी (अधिक हाल ही में है कि 2013 से ओ पी)

git checkout --recurse-submodules 

--recurse-submodules का प्रयोग सुपरप्रोजेक्ट में दर्ज प्रतिबद्धता के अनुसार सभी प्रारंभिक submodules की सामग्री को अपडेट करेगा।
यदि एक सबमिशन में स्थानीय संशोधन ओवरराइट किया जाएगा तो चेकआउट विफल हो जाएगा जब तक -f का उपयोग नहीं किया जाता है।

"git checkout --recurse-submodules" नहीं एक submodule है जो अपने आप submodules है के साथ काफी काम किया है। यह गिट 2.14 के साथ होगा।

+0

मुझे समझ में नहीं आता कि क्यों '-f' हमेशा आवश्यक है। '-f' के बिना यह submodules अद्यतन नहीं करता है। – linquize

+0

@linquize '-f' केवल तब आवश्यक होना चाहिए जब आपके पास सबमिशन में कोई स्थानीय संशोधन हो। – VonC

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