/ / दोनों दिशाओं में गिट सबट्री और मर्ज अपडेट का उपयोग करके एक अन्य गिट रिपॉजिटरी का हिस्सा कैसे शामिल करें - गिट, जीथब, गिट-मर्ज, गिट-सबट्री

गिट सबट्री का उपयोग करके किसी अन्य गिट रिपोजिटरी का हिस्सा कैसे शामिल करें और दोनों दिशाओं में अपडेट मर्ज करें - गिट, जिथब, गिट-मर्ज, गिट-सबट्री

मेरे पास नीचे दो git रिपॉजिटरी शो हैं। पहला एक ठेठ अजगर परियोजना की तरह संरचित है।

foo_repo/
.git/
setup.py
foo/
__init__.py
some_code.py
tests/

bar/
.git/

मैं शामिल करना चाहूंगा foo_repo/foo/ निर्देशिका में bar/ एक सबट्री के रूप में और मैं अपडेट को मर्ज करने में सक्षम होना चाहता हूं foo_repo/foo/some_code.py दोनों foo_repo भंडार से बार और इसके विपरीत।

प्रारंभिक सेटअप isn "t बहुत खराब है। से foo/ निर्देशिका मैं उपयोग:

git subtree --prefix=foo/ split -b export

तब मेरे पास foo_repo में केवल की सामग्री के साथ एक नई शाखा है foo_repo/foo/ निर्देशिका। इसे बार में लाने के लिए, मैं अभी जाता हूं bar/ निर्देशिका और:

git subtree --prefix=foo/ add ../foo_repo/.git export

अब जब मैं "सब सेट अप" कर रहा हूँ, तो मुझे कुछ कोड डेवलपमेंट और रखना पसंद है foo/ दोनों रेपो में अप टू डेट। बार से धक्का मुझे लगता है कि मुझे पता चल गया है। से bar/ निर्देशिका:

touch foo/more_code.py
git add foo/more_code.py
git commit -m "more code"
git subtree --prefix=foo/ push ../foo_repo/.git export

तब से foo_repo/ निर्देशिका:

git checkout master
git subtree --prefix=foo/ merge export

दूसरे रास्ते को मिलाते हुए जहाँ मैं "अटक" foo_repo/:

git checkout master
touch foo/yet_more_code.py
git add foo/yet_more_code.py
git commit -m "yet more code"
???

जहां ??? एक कमांड है जो विलय करता है foo/ के साथ निर्देशिका export डाली। तब से bar/:

git subtree --prefix=foo/ pull ../foo_repo/.git export

तो मैं मूल रूप से उस लाइन की तलाश में हूं जो अंदर जाती है ??? स्पॉट, या एक अलग वर्कफ़्लो जो एक ही काम करता है। मैंने दोहराने की कोशिश की git subtree --prefix=foo/ split -b export_foo कि काम नहीं करता है।

उत्तर:

उत्तर № 1 के लिए 1

यदि आप फिर से विभाजित हो जाते हैं foo/ इस सबट्री के लिए बनाए गए नए कमिट पहले से मौजूद पुराने कमिट्स के ऊपर बनाए जाएंगे export, इस तरह के लिए आवश्यक हैं कि विलय सहित:

git subtree --prefix=foo/ split

ध्यान दें कि यदि उपयोग कर रहे हैं -b विकल्प शाखा में पहले से मौजूद नहीं होना चाहिए, इसलिए आपको एक नई शाखा बनाने या बाद में इसे बदलने के लिए मजबूर करना पड़ सकता है।