2015-11-04 9 views
8

मैं एक ऐसी सेवा लिख ​​रहा हूं जो एक सुपरप्रोजेक्ट पॉइंट्स में प्रत्येक सबमिशन को प्रतिबद्ध करता है। ऐसा करने का मेरा बेवकूफ तरीका git fetch को एक सबमिशन, git reset --hard <hash> में चलाने के लिए होगा, और उसके बाद सबमिशन जोड़ें और इसे प्रतिबद्ध करें।मैं बिना किसी विशिष्ट प्रतिबद्धता को इंगित किए एक सबमिशन कैसे सेट कर सकता हूं?

मैं git fetch चरण को छोड़ना चाहता हूं और बस बेहतर प्रदर्शन के लिए दिए गए हैश को इंगित करने के लिए सबमिशन को मजबूर करना चाहता हूं (ऑब्जेक्ट्स लाने और डिस्क स्थान लेना) और ऐसी गतिविधियों को संभालने के लिए जो अब अपस्ट्रीम मौजूद नहीं हो सकते हैं और ' वैसे भी लाया जा सकता है (अगर वे एक बल धक्का द्वारा clobbered थे)।

उत्तर

7

समाधान गिट इंडेक्स को सीधे लिखना है, जो वास्तव में submodules के लिए आसान है। Git 2 के साथ:

git update-index --cacheinfo 160000,<Git hash of the submodule's tree>,<path to the submodule>


इसलिए उदाहरण के लिए अपनी परियोजना निर्देशिका संरचना इस तरह दिखता है:

. 
├── .git 
└── submodule 
फिर

बात करने के लिए submodule अद्यतन करने के लिए प्रतिबद्ध करने के लिए 2764a900748fbed7453f5839cb983503cee346d2 आप चलाना होगा:

git update-index --cacheinfo 160000,2764a900748fbed7453f5839cb983503cee346d1,submodule

और अंत में git commit के साथ सामान्य रूप से इसका पालन करें।

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

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