सरल git कमांड के साथ मैनुअल स्टेप्स
योजना को अलग-अलग निर्देशिकाओं को अपने स्वयं के भंडार में विभाजित करना है, फिर उन्हें एक साथ विलय करना है। निम्नलिखित मैनुअल चरणों ने geek-to-use स्क्रिप्ट्स को नहीं बल्कि आसानी से समझी जाने वाली आज्ञाओं को नियोजित किया और अतिरिक्त N उप-फ़ोल्डरों को किसी अन्य एकल भंडार में विलय करने में मदद कर सकता है।
फूट डालो
मान लेते हैं कि आपका मूल रेपो है: original_repo
1 - स्प्लिट ऐप्स:
git clone original_repo apps-repo
cd apps-repo
git filter-branch --prune-empty --subdirectory-filter apps master
2 - विभाजन लिबास
git clone original_repo libs-repo
cd libs-repo
git filter-branch --prune-empty --subdirectory-filter libs master
जारी रखें यदि आपके पास 2 से अधिक फ़ोल्डर हैं। अब आपके पास दो नए और अस्थायी गिट रिपॉजिटरी होंगे।
ऐप्स और लिबास को मर्ज करके जीतना
3 - एकदम नया रेपो तैयार करें:
mkdir my-desired-repo
cd my-desired-repo
git init
और आपको कम से कम एक प्रतिबद्ध बनाने की आवश्यकता होगी। यदि निम्नलिखित तीन पंक्तियों को छोड़ दिया जाना चाहिए, तो आपका पहला रेपो आपके रेपो की जड़ के नीचे दिखाई देगा:
touch a_file_and_make_a_commit # see user's feedback
git add a_file_and_make_a_commit
git commit -am "at least one commit is needed for it to work"
अस्थायी फ़ाइल के शुरू merge
होने के बाद , बाद के अनुभाग में कमांड अपेक्षा के अनुरूप बंद हो जाएगी।
उपयोगकर्ता की प्रतिक्रिया से लेना, जैसे एक यादृच्छिक फ़ाइल जोड़ने के बजाय a_file_and_make_a_commit
, आप एक .gitignore
, या README.md
आदि जोड़ना चुन सकते हैं ।
4 - पहले एप्स को मर्ज करें:
git remote add apps-repo ../apps-repo
git fetch apps-repo
git merge -s ours --no-commit apps-repo/master # see below note.
git read-tree --prefix=apps -u apps-repo/master
git commit -m "import apps"
अब आपको अपने नए रिपॉजिटरी के अंदर ऐप्स डायरेक्टरी को देखना चाहिए । git log
सभी प्रासंगिक ऐतिहासिक प्रतिबद्ध संदेश दिखाना चाहिए।
नोट: जैसा कि क्रिस ने टिप्पणी के नए संस्करण (> = 2.9) के लिए नीचे टिप्पणी की है, आपको इसके --allow-unrelated-histories
साथ निर्दिष्ट करने की आवश्यकता हैgit merge
5 - उसी तरह से अगले दिन रेपो का विलय करें:
git remote add libs-repo ../libs-repo
git fetch libs-repo
git merge -s ours --no-commit libs-repo/master # see above note.
git read-tree --prefix=libs -u libs-repo/master
git commit -m "import libs"
यदि आपके पास विलय करने के लिए 2 से अधिक प्रतिनिधि हैं, तो जारी रखें।
संदर्भ: गिट के साथ एक और रिपॉजिटरी के एक उपनिर्देशिका को मर्ज करें