2009-03-16 7 views
7

मेरे पास दो छोटे गिट रेपो हैं। दोनों परियोजनाएं अलग-अलग बिंदुओं से शुरू हुईं लेकिन एक बहुत ही समान (समान फ़ाइल नाम, फ़ोल्डर संरचना, आदि) में परिवर्तित हो गईं। एक दूसरे की शाखा नहीं है, लेकिन किसी को दूसरे का विकास माना जा सकता है।क्या दो समान रूप से संरचित गिट रेपो विलय किए जा सकते हैं जब उनके पास कभी भी कोई आम इतिहास नहीं होता है?

यह अच्छा होगा अगर मैं दोनों को विलय कर सकूं ताकि repo2repo1 की निरंतरता हो। क्या यह संभव है, के अंत तक repo2 का इतिहास जोड़ना?

उत्तर

7

आप fetch one into another कर सकते हैं:

$ cd project1 
$ git config remote.project2.url /path/to/project2 
$ git config remote.project2.fetch 'refs/heads/*:refs/project2/*' 
$ git fetch project 

आप दो (या अधिक) शाखाओं दे देंगे कि, Project1 और Project2 के इतिहास से युक्त। वे अभी भी पूरी तरह से स्वतंत्र हैं, बस एक ही ऑब्जेक्ट स्टोर का उपयोग करें।

तब (परीक्षण नहीं), आप एक भ्रष्टाचार फ़ाइल (.git/info/grafts) इस्तेमाल कर सकते हैं जहाँ आप एक के अपने पिता होने के ऊपर लिख सकता है

Dustin के रूप में (मूल के लिए Project1 के नवीनतम होने Project2 के पहले की तरह) के लिए प्रतिबद्ध टिप्पणियों में कहते हैं, प्रोजेक्ट 2 को प्रोजेक्ट 1 पर दोबारा शुरू करके, "इसे स्थायी बनाने" के लिए एक रिबेस क्रमशः है।


आप विशेष रूप से खंड "कैसे मित्र खींच सकते हैं और लोगों को प्रभावित करने के लिए" इस "Using Git within a project (forking around)" ब्लॉग प्रविष्टि में एक और उदाहरण है। फिर:

git checkout two_point_ooh 
git remote add strelau git://gitorious.org/ruby-on-rails-tmbundle/mainline.git 
git checkout -b strelau/two_point_ooh 
git pull strelau two_point_ooh 

इसी तरह की प्रक्रिया

+0

ध्यान दें कि आप भ्रष्टाचार के बाद rebase चाहिए तरह इसे बनाने के लिए (जो वास्तव में नहीं अपने मामला है) है, लेकिन खजाने जो काँटेदार कर रहे हैं के लिए "स्थायी।" – Dustin