2012-04-27 24 views
6

मेरे पास एक पुराना गिट रेपो है, इसे app पर कॉल करें। फिर, एक साल बाद, मैं ऐप को स्क्रैच से पुनर्निर्माण करना चाहता था, इसलिए मैंने एक नया रेपो बनाया, इसे app-2 पर कॉल करें।दो गिट भंडारों के इतिहास को समझाएं?

अब, मैं मैं चाहिए बस, एक नई शाखा या कुछ और कर दिया है एक नया रेपो के बजाय का एहसास, क्योंकि मैं बहुत app अब है कि app-2 से छुटकारा पाने के app के शीर्ष पर app-2 के इतिहास के लिए कदम और उसके बाद करना चाहते हैं app + app-2 का सभी इतिहास।

क्या यह संभव है?

अद्यतन:

मैंने कोशिश की सभी फाइलों (.git निर्देशिका के लिए छोड़कर) app में दूर करने और एक प्रतिबद्ध बनाकर "reseting" app रेपो। तब:

cd ~/Projects/app-2 
git format-patch --stdout --root master > ../app/app-2-patches.txt 
cd ../app 
git am app-2-patches.txt 

लेकिन, मुझे संघर्ष स्थानों पर जहां मैं app-2 में शाखाएं थीं में मिला है।

app-2 के इतिहास की शाखा संरचना को रखते हुए app-2 से काम करना संभव है?

+0

क्या आपको एक ही रेपो में रहने की आवश्यकता है? और यदि हां, तो क्या एक कारण है कि उन्हें एक ही शाखा में होना है? पुराने संस्करण के इतिहास को स्टोर करने के लिए सिर्फ एक अलग शाखा क्यों नहीं है, और फिर बस अपना वर्तमान नया ऐप मास्टर शाखा बनें? – Amber

उत्तर

2

आप इसके लिए गिट के भ्रष्टाचार बिंदुओं का उपयोग कर सकते हैं। सबसे पहले app का इतिहास दूरस्थ रूप से app-2 में खींचें, फिर निर्देशों का पालन करें उदा। this answer में।

+0

विशेष रूप से: आप "वास्तविक" इतिहास में एक भ्रमित इतिहास को चालू करने के लिए 'गिट फ़िल्टर-शाखा' का उपयोग कर सकते हैं, फिर भ्रष्टाचार बिंदु से छुटकारा पाएं। ध्यान रखें कि यह आपके सभी प्रतिबद्धताओं को बदल देगा! – duskwuff

0

चरण एक को दो रेप्स में दो ऐप्स मिलते हैं; चरण दो उन्हें कुछ समझदार तरीके से विलय कर रहा है।

कदम एक मैं में भंडार शाखाओं के सभी एप्लिकेशन-2 एप्लिकेशन भंडार में शाखाओं को धक्का कहेंगे के लिए:

$ cd /path/to/app-2 
$ git remote add app-repo /path/to/app 
$ git push app-repo master:app-2-master  # master in app-2 goes to app-2-master in app repo 
# repeat for other branches in app-2 
अब अधिक एप्लिकेशन भंडार आप अपनी सभी शाखाओं और सभी एप्लिकेशन है, में

-2 शाखाएं आइए मान लें कि आप ऐप से व्युत्पन्न ऐप -2 पर विचार करना चाहते हैं। तो फिर तुम साथ एप्लिकेशन पर एप्लिकेशन -2 के सभी rebase:

$ cd /path/to/app 
$ git checkout app-2-master 
$ git rebase master 

इस संघर्ष को सुलझाने के काम की बहुत सारी शामिल हो सकता है लेकिन Git भी आप के लिए काम का भार कर रही होगी।

+1

नाइट: 'गिट एड रिमोट' 'git रिमोट एड 'होना चाहिए –

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

  • कोई संबंधित समस्या नहीं^_^