2008-10-28 7 views
47

मेरी Git संग्रह के ढांचे इस तरह दिखेगा:एक ही भंडार में दो अलग-अलग भंडारों से दो शाखाओं को कैसे जोड़ा जाए?

A-B-C-D-E-F # master branch in separate repo1 
A-B-C-D-E-G-H # master branch in separate repo2 

ए-एच सरल करता है। जैसा कि आप देख सकते हैं कि भंडार संबंधित हैं (रेपो 2 रेपो 1 का कांटा है)। मैं इन दो भंडारों को एक में गठबंधन करने की कोशिश कर रहा हूं।

A-B-C-D-E-F # master branch of previous repo1 
     \ 
     \ 
      G-H # master branch of previous repo2 

मैं पहले से ही पढ़ने Git उपयोगकर्ता मार्गदर्शिका बहुत समय बिताया है और इतने पर:

बाद में एकल भंडार निम्नलिखित संरचना होनी चाहिए। हालांकि, उपयोग के इस (विशेष) मामले को कहीं भी दस्तावेज नहीं लग रहा है।

+0

कभी-कभी समाधान स्वयं को समझने के लिए बहुत ही सरल होते हैं;) –

उत्तर

70

आप रिमोट रेपो के रूप में एक ही फाइल सिस्टम पर एक और गिट भंडार का इलाज कर सकते हैं।

पहले में, निम्न करते हैं:

git remote add <name> /path/to/other/repo/.git 
git fetch <name> 
git branch <name> <name>/master #optional 

अब वे एक ही भंडार में दोनों शाखाओं कर रहे हैं। आप गिट चेकआउट के साथ स्विच कर सकते हैं, गिट मर्ज, आदि के साथ विलय कर सकते हैं

7

आपकी तस्वीर से पता चलता है कि आप वास्तव में "दो रिपॉजिटरीज को गठबंधन" नहीं करना चाहते हैं, क्योंकि जी और एच को रेपो 1 में विलय करना है। आपको रेपो 1 के लिए रिमोट 2 के रूप में रेपो 2 जोड़ने और परिवर्तन लाने/खींचने के लिए कुछ आसान करने में सक्षम होना चाहिए।

4

मुझे लगता है कि जिम सही है। यह भी ध्यान रखें कि यदि दो कोड वास्तव में कोड के खिलाफ एक ही पैच/diff करते हैं, तो उनके पास बिल्कुल वही SHA1 हैश होगा। तो ई के माध्यम से ई दोनों रिपो में एक ही SHA1 होना चाहिए, इसलिए इसे एक से दूसरे में विलय करने में कोई समस्या नहीं होनी चाहिए, और मर्ज किए गए रेपो को आगे बढ़ने के लिए एकमात्र रेपो के रूप में रखना चाहिए।

आप repo1 को repo2 के लिए एक ट्रैकिंग शाखा पर सेट कर सकते हैं, और फिर उन्हें इस तरह से अलग रखें, और जब चाहें विलय में देरी हो।