गिट रिपॉजिटरी की नकल कैसे करें? (बिना फोर्क किए)


117

मेरे पास दो रिपॉजिटरी हैं, और मुझे पूरे एक को दूसरे खाली पर कॉपी करने की आवश्यकता है, जिसमें पहले एक से अलग पहुंच स्तर है। प्रतिलिपि और माँ भंडार को एक साथ नहीं जोड़ा जाना चाहिए।

मैं गिट के लिए नया हूं और यह भयानक होगा अगर कोई मेरी मदद कर सकता है।


5
यकीन नहीं है, लेकिन मुझे लगता है कि आप इसे क्लोन कर सकते हैं और फिर git config Remote.origin.url git: //new.url/proj.git का उपयोग करके अपने नए प्रतिनिधि को Remote.origin सेट कर सकते हैं।
रुफिनस

फिर मैंने जो लिंक पोस्ट किया है, वह कुछ ऐसा ही करता है।
nbz

@ दारुणिनस मैंने वही किया। धन्यवाद।
काउबॉयबॉप

जवाबों:


205

Https://help.github.com/articles/duplicating-a-repository देखें

लघु संस्करण:

एक सटीक डुप्लिकेट बनाने के लिए, आपको नंगे-क्लोन और दर्पण-धक्का दोनों प्रदर्शन करने की आवश्यकता है:

mkdir foo; cd foo 
# move to a scratch dir

git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository

cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository

cd ..
rm -rf old-repository.git  
# Remove our temporary local repository

नोट: उपरोक्त किसी भी दूरस्थ गिट रेपो के साथ ठीक काम करेगा, निर्देश जीथब के लिए विशिष्ट नहीं हैं

ऊपर रेपो की एक नई रिमोट कॉपी बनाता है। फिर इसे अपने काम करने वाली मशीन पर क्लोन करें।


2
यदि पुराने और नए रिपॉजिटरी का एक ही नाम (समान git URL नहीं) होता है तो क्या होता है। जैसा कि मैं सिर्फ Jeremy.gitएक और क्लोन करता हूंJeremy.git
Gran_profaci

यह एक सटीक डुप्लिकेट नहीं होगा। मुद्दों को स्थानांतरित नहीं किया जाएगा।
स्लैम

क्या इससे इतिहास का संरक्षण होता है?
थॉमस

@ थोमस मैंने बस यही किया और हाँ, इसने कॉपी में मेरे सारे इतिहास को संरक्षित कर दिया। ध्यान दें कि जब आप नए रेपो में धक्का देते हैं और सीडी करते हैं, तब भी कुछ नहीं होता है क्योंकि आपने रिमोट से धक्का दिया है, इसलिए आपको एक पुल करने की आवश्यकता है
PfunnyGuy

7
GitHub के साथ काम करने के इस उत्तर के लिए, सबसे पहले GitHub पर नया-रिपॉजिटरी बनाना होगा।
एलेक्स होलकोम्ब

23

आप git-copy का भी उपयोग कर सकते हैं ।

मणि के साथ इसे स्थापित करें,

gem install git-copy

फिर

git copy https://github.com/exampleuser/old-repository.git \
    https://github.com/exampleuser/new-repository.git

1
आप पहली जगह में मणि कैसे स्थापित करते हैं? यह सबसे परेशानी मुक्त समाधान की तरह लगता है। Upvoted!
sran3h

यह आमतौर पर एक रूबी स्थापित का हिस्सा है। उबंटू पर sudo apt install ruby
नुकसान

10

यदि आप GitHub की नकल कर रहे हैं, तो आप अपने लिए ऐसा करने के लिए GitHub आयातक का उपयोग कर सकते हैं । मूल रेपो अन्य संस्करण नियंत्रण प्रणालियों से भी हो सकता है।


4
यह पूरी तरह से काम करता है और यहां तक ​​कि इतिहास भी रखता है - उच्चतर होना चाहिए
जॉन डी

1
मैं सहमत हूँ। यह दृष्टिकोण बहुत अधिक सहज है, यह पूरी तरह से जीथब GUI के भीतर किया जा सकता है, और इसमें भ्रामक कमांड लाइन बकवास में से कोई भी शामिल नहीं है। चरण: 1) जीयूआई में नए रेपो बनाते हैं, लेकिन "आरईएडीएमई के साथ इस रिपॉजिटरी को प्रारंभ करें" लेबल वाले चेक बॉक्स पर क्लिक न करें। ऐसा करने के बाद यह गितुब आपको एक नया पृष्ठ और लेबल के साथ एक विकल्प प्रस्तुत करेगा ... या आयात कोड। एक और भंडार। " बस!
ल्यूक एफ।

5

यदि आप किसी मौजूदा एक (यानी, एक तरह के टेम्प्लेट) से सभी या अधिकांश फ़ाइलों का उपयोग करके एक नया रिपॉजिटरी बनाना चाहते हैं, तो मुझे लगता है कि सबसे आसान तरीका यह है कि वांछित नाम आदि के साथ एक नया रेपो बनाना, इसे क्लोन करें आपका डेस्कटॉप, उसके बाद केवल उन फ़ाइलों और फ़ोल्डरों को जोड़ें जिन्हें आप चाहते हैं।

आपको सारा इतिहास आदि नहीं मिलता है, लेकिन आप शायद इस मामले में ऐसा नहीं चाहते हैं।


-1

टर्मिनल खोलें।

रिपॉजिटरी का एक नंगे क्लोन बनाएं।

git clone --bare https://github.com/exampleuser/old-repository.git

Mirror-push to the new repository.

सीडी पुराना-भंडार

git push --mirror https://github.com/exampleuser/new-repository.git


मैंने आपके दृष्टिकोण की कोशिश की। और मुझे यह त्रुटि संदेश मिला:! [रिमोट रिजेक्टेड] मास्टर -> मास्टर (पूर्व प्राप्त हुक अस्वीकृत) और कई अन्य समान संदेश। पिछले एक था: त्रुटि: कुछ रेफरी को धक्का देने में विफल रहा मैं इसे कैसे सही कर सकता हूं?
एलएनडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.