क्या एक परियोजना में कई मूल हो सकते हैं?


187

क्या किसी परियोजना में Git में दो (या अधिक) "मूल" हो सकते हैं?

मैं एक परियोजना को github और एक Heroku सर्वर दोनों पर धकेलना चाहूंगा ।

विशेष रूप से, यह त्रुटि तब दिखाई देती है जब github रिपॉजिटरी को जोड़ते हैं:

$ git remote add origin https://github.com/Company_Name/repository_name.git
fatal: remote origin already exists.

8
आपके पास जितने चाहें उतने दूरस्थ रिपॉजिटरी हो सकते हैं, लेकिन आपको उन्हें अलग-अलग नाम देने होंगे।
फेलिक्स क्लिंग

इस मामले में रिपॉजिटरी का नाम अलग है। क्या शब्द "उत्पत्ति" एक ऐसा नाम है जिसे बदला जा सकता है?
बजे क्रिस डुट्रो जूल

4
हां git remote rename <old> <new>,: linux.die.net/man/1/git-remote । लेकिन आप गितुब भंडार को अलग नाम भी दे सकते हैं ...
फेलिक्स क्लिंग


और क्या यह संभव है कि रीमोट में से एक को डिफ़ॉल्ट बनाया जाए, इसलिए मुझे उस रिमोट का नाम स्पष्ट रूप से लिखने के लिए नहीं कहा जाता है जिसे मैं धक्का दे रहा हूं?
40detectives

जवाबों:


275

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

इसके बजाय "github" नामक रिमोट जोड़ने का प्रयास करें:

$ git remote add github https://github.com/Company_Name/repository_name.git

# push master to github
$ git push github master

# Push my-branch to github and set it to track github/my-branch
$ git push -u github my-branch

# Make some existing branch track github instead of origin
$ git branch --set-upstream other-branch github/other-branch

4
जैसा कि इस सवाल के लिए उच्चतम वोटों के जवाब के साथ संकेत दिया गया है कि यह संभवतः डुप्लिकेट करता है - एक रिमोट कई रिपॉजिटरी को संदर्भित कर सकता है। इसलिए आप एक रिमोट पर पुश कर सकते हैं और दो या अधिक रिपॉजिटरी को अपडेट कर सकते हैं , यह स्पष्ट नहीं है कि ओपी का लक्ष्य हालांकि।
AD7six

यद्यपि आप ऐसा क्यों करना चाहते हैं, इसके कुछ व्यावहारिक उदाहरण हैं? आपकी एक निर्देशिका कई रिपॉजिटरी की ओर क्यों संकेत करेगी? प्रत्येक रिपॉजिटरी में आमतौर पर इसका अपना समर्पित डायर होता है
dspacejs

4
@mightyspaj बहुत से हर कोई जो हरोकू को नियुक्त करता है उसके पास एक रिमोट कहा जाता है originऔर एक रिमोट कहा जाता है heroku
meagar

@mightyspaj, या यदि आपकी टीम कांटे का उपयोग कर रही है और आप कभी-कभी उन्हें एक्सेस करना चाहते हैं। हम ऐसा करते हैं कि हमारी टीम अलग-अलग UTC में टीमों के साथ काम कर रही है ताकि जब हम PR को मंजूरी दें, तो हम वहां फोर्क का उपयोग करके रिबास / पुश कर सकते हैं और अब कोड को मर्ज करने में सक्षम हैं, कल नहीं)।
बेनोइट ड्रेपेउ

क्या एक बार में सभी स्थानीय शाखाओं को नए रिमोट पर धकेलने का कोई तरीका है?
तानियाँ

89

बाद में इस प्रश्न पर किसी के लिए भी एक नोट के रूप में, यह संभव है कि एक समय में एक से अधिक गिट रिपॉजिटरी सर्वर से मूल धक्का हो।

आप मूल रिमोट में किसी अन्य URL को जोड़ने के लिए निम्न कमांड का उपयोग करके इसे प्राप्त कर सकते हैं।

git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git

8
इस पर अधिक विचार के लिए, इस प्रश्न को देखें ।
moi

3
ठीक है, तो मैं उन सभी को हटाए बिना इनमें से किसी एक उत्पत्ति को कैसे हटाऊं?
माइकल

@ मिचेल आप ./git/configफ़ाइल को संपादित कर सकते हैं और [दूरस्थ "मूल"] अनुभाग के तहत url फ़ाइल को निकाल सकते हैं
Pini Cheyni

8
@ git remote set-url --delete origin ssh://git@bitbucket.org/user/myproject.git
मिचेल

क्या सभी रीमेक का इतिहास एक जैसा होना चाहिए? क्या होगा अगर मैं कुछ कमिट्स को एक रिमोट पर धकेलना चाहता हूं और दूसरे को नहीं
कासिम

44

यहां कई रीमोट, GitHub और GitLab के साथ एक नमूना परियोजना है:

  1. GitHub के लिए दूरस्थ रेपो जोड़ें

    $ git remote add github https://github.com/Company_Name/repository_name.git
    
  2. GitLab के लिए रिमोट रेपो जोड़ें

    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git
    
  3. अब आपके पास प्रोजेक्ट में कई रीमोट हैं। के साथ दोहरी जांचgit remote -v

    $ git remote -v
    github https://github.com/Company_Name/repository_name.git (fetch)
    github https://github.com/Company_Name/repository_name.git (push)
    gitlab https://gitlab.com/Company_Name/repository_name.git (fetch)
    gitlab https://gitlab.com/Company_Name/repository_name.git (push)
    
  4. आप कई रिपॉजिटरी में कैसे धकेलेंगे?

    $ git push github && git push gitlab
    

2
सिर्फ $ git pushसभी रीमोट को पुश नहीं करेंगे ?
वाटर कूलर v2

हम मुद्दा है जब मैं gitlab को github तो स्वचालित धक्का धक्का कोशिश करते हैं। क्या तुम कृप्या मेरी मदद कर सकते हो ? मैं एक-एक मूल को आगे बढ़ाना चाहता हूं।
मितुल मार्सनिया

अगर मैं gitlab में दो प्रोजेक्ट, दो रिपॉजिटरी, मैं इसके साथ कैसे काम करूँ? मुझे एक परियोजना से कोड मिलता है, फिर इसे दूसरी परियोजना में धकेल देते हैं?
मुज़ी जैक

2

आप मूल के बजाय अलग नाम देकर अपने भंडार में एक और दूरस्थ खाता जोड़ सकते हैं। आप मूल 2 जैसे नाम का उपयोग कर सकते हैं। इसलिए आपके git कमांड को संशोधित किया जा सकता है

git remote add origin2 https://github.com/Company_Name/repository_name.git


1
git remote set-url --add --push origin git@github.com:user/my-project.git
git remote set-url --add --push origin git@bitbucket.org:user/my-project.git

अब आपके पास 2 मूल हैं।


1
यह उत्तर --pushविकल्प की बदौलत दूसरों की तुलना में अधिक सहायक / परिष्कृत है ।
दिमित्री जैतसेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.