Git रिपॉजिटरी से उत्पत्ति कैसे निकालें


279

मूल प्रश्न: मैं उस मूल से एक git रेपो को अलग कैसे कर सकता हूं जिससे इसे क्लोन किया गया था?

git branch -a दिखाता है:

* master
  remotes/origin/HEAD -> origin/master

और मैं उत्पत्ति के सभी ज्ञान और संबंधित संशोधनों को दूर करना चाहता हूं।

लंबा सवाल: मैं एक मौजूदा तोड़फोड़ रेपो लेना चाहता हूं और उससे कई छोटे गिट रेपो बनाना चाहता हूं। नए गिट रिपॉजिट्स में से प्रत्येक में सिर्फ संबंधित ब्रांच का पूरा इतिहास होना चाहिए। मैं रेपो को केवल उप-वर्ग के उपप्रयोग के लिए प्रून कर सकता हूं:

git filter-branch --subdirectory-filter path/to/subtree HEAD

लेकिन परिणामी रेपो में अभी भी मूल / मास्टर शाखा के तहत अब-परित्यक्त उपप्रकार के सभी संशोधन शामिल हैं।

मुझे एहसास है कि मैं -T ध्वज का उपयोग करने के लिए पहली जगह में तोड़फोड़ रेपो के प्रासंगिक उपप्रकार क्लोन करने के लिए git-svn कर सकता हूं। मुझे यकीन नहीं है कि अगर बाद git filter-branch --subdirectory-filterमें गिट रेपो की प्रतियों पर कई इंस्टेंटेशन चलाने की तुलना में यह अधिक कुशल होगा , लेकिन किसी भी मामले में, मैं अभी भी मूल के साथ लिंक को तोड़ना चाहूंगा।

जवाबों:


476

काफी सरल:

git remote rm origin

इस filter-branchप्रश्न के लिए - बस --prune-emptyअपनी फ़िल्टर शाखा कमांड में जोड़ें और यह किसी भी संशोधन को हटा देगा जिसमें वास्तव में आपके परिणामस्वरूप रेपो में कोई बदलाव नहीं होता है:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD

1
धन्यवाद। यह था --prune-emptyकि मैं गायब था।
9

2
हम्म। हो रही हैerror: Could not remove config section 'remote.origin'
Dima Lituiev

5

मौजूदा मूल निकालें और अपनी परियोजना निर्देशिका में नया मूल जोड़ें

>$ git remote show origin

>$ git remote rm origin

>$ git add .

>$ git commit -m "First commit"

>$ git remote add origin Copied_origin_url

>$ git remote show origin

>$ git push origin master
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.