Git में "मूल" क्या है?


582

जब मैं चलता हूं:

git push origin branchname

वास्तव में क्या है originऔर मुझे शाखा नाम से पहले इसे क्यों लिखना है?


63
"मूल" दूरस्थ रिपॉजिटरी का नाम है जहां आप प्रकाशित करना चाहते हैं। कन्वेंशन द्वारा, डिफ़ॉल्ट रिमोट रिपॉजिटरी को "मूल" कहा जाता है, लेकिन आप एक ही समय में कई रीमोट (विभिन्न नामों के साथ) के साथ काम कर सकते हैं। अधिक जानकारी यहाँ (उदाहरण के लिए): gitref.org/remotes
बेनोइट

1
यह भी ध्यान रखें कि मूल एक "ऊपर" है रेपो: देखने stackoverflow.com/questions/2739376/...
VonC


लेकिन उसके बाद जब git लाने के लिए और फिर git ब्रांच -r लोकल ब्रांच की उत्पत्ति / उग्ग के साथ प्रीपेन्ड किया जाता है
brat

.Out \ config फ़ाइल चेकआउट करें। इसमें उपनामों से URL तक मैपिंग शामिल हैं। .ITT फ़ोल्डर डिफ़ॉल्ट रूप से छिपा हुआ है।
अभिजीत पटेल

जवाबों:


568

originएक विशेष दूरस्थ रिपॉजिटरी के लिए आपके सिस्टम पर एक उपनाम है। यह वास्तव में उस भंडार का गुण नहीं है।

ऐसा करके

git push origin branchname

आप originरिपॉजिटरी को पुश करने के लिए कह रहे हैं । रिमोट रिपॉजिटरी नाम रखने की कोई आवश्यकता नहीं है origin: वास्तव में एक ही रिपॉजिटरी किसी अन्य डेवलपर के लिए एक अलग उपनाम हो सकता है।

उपाय केवल एक उपनाम है जो रिपॉजिटरी के URL को संग्रहीत करता है। आप देख सकते हैं कि किस URL का उपयोग करके प्रत्येक रिमोट से संबंधित है

git remote -v

में pushआदेश, आप उपयोग कर सकते हैं रिमोट या आप बस एक का उपयोग कर सकते यूआरएल सीधे। एक उदाहरण जो URL का उपयोग करता है:

git push git@github.com:git/git.git master

1
क्या एक एकल रिमोट कई अन्य रिमोट के लिए एक उपनाम हो सकता है? क्या होगा अगर मैं एक रिमोट को एक से अधिक अन्य रीमोट में धकेलना चाहता था? उदाहरण के लिए, एक प्राथमिक रेपो पर पुश करें, और बैकअप रेपो पर एक धक्का? क्या कुछ परिस्थितियों में यह एक उचित बात होगी? संपादित करें: यहाँ कई समाधान हैं
यांकी

1
क्या होगा अगर मैं "मूल" कीवर्ड को छोड़ दूं? जब हम कहते हैं कि "git push", तो क्या यह वैसे भी नहीं है जैसे कि सभी रिपॉजिटरी को रिमोट रिपॉजिटरी में धकेलता है? "मूल" कीवर्ड जोड़ना निरर्थक लगता है।
मुगैन

@Mugen git pushआपके लिए डॉक्स में यह देख सकते हैं कि यह पहली बार उस रिपॉजिटरी के लिए कॉन्फिग को चेक करता है (जिसे आप चेक कर सकते हैं git config --list) branch.<branchname>.remote। यदि वह सेट नहीं है, तो "यह मूल के लिए चूक" - git-scm.com/docs/git-push
Kenmore

156

originहै नहीं दूरदराज के भंडार नाम। यह बल्कि दूरस्थ रिपॉजिटरी URL के स्थान पर एक कुंजी के रूप में सेट किया गया एक स्थानीय उपनाम है

यह उपयोगकर्ता को एक धक्का देते समय पूरे दूरस्थ URL को टाइप करने से बचता है।

यह नाम डिफ़ॉल्ट रूप से और Git द्वारा कन्वेंशन के लिए सेट किया जाता है जब पहली बार रिमोट से क्लोनिंग की जाती है।

यह उपनाम नाम हार्ड कोडित नहीं है और इसे कमांड प्रॉम्प्ट का उपयोग करके बदला जा सकता है:

git remote rename origin mynewalias

अधिक स्पष्टीकरण के लिए http://git-scm.com/docs/git-remote पर एक नज़र डालें ।


1
क्या होगा अगर मैं "मूल" कीवर्ड को छोड़ दूं? जब हम कहते हैं कि "git push", तो क्या यह वैसे भी नहीं है जैसे कि सभी रिपॉजिटरी को रिमोट रिपॉजिटरी में धकेलता है? "मूल" कीवर्ड जोड़ना निरर्थक लगता है।
मगें

74

Git में "रिमोट" की अवधारणा है, जो आपके रिपॉजिटरी की अन्य प्रतियों के लिए केवल URL हैं। जब आप एक और रिपॉजिटरी को क्लोन करते हैं, तो गिट स्वचालित रूप से "मूल" नामक रिमोट बनाता है और इसे इंगित करता है।

आप टाइप करके रिमोट के बारे में अधिक जानकारी देख सकते हैं git remote show origin


1
git कमांड शुरुआती लोगों के लिए बहुत भ्रामक हैं। मुझे लगता है कि यह इस संस्करण नियंत्रण प्रणाली के इतिहास के साथ करना है। तो, सवाल: इसके बजाय git remote show origin, बस क्यों नहीं git show origin? एक कारण होना चाहिए, यह क्या है? धन्यवाद।
Stack0verflow

5
@ Stack0verflow: यह शायद एक नए प्रश्न के रूप में बेहतर तरीके से पूछा जाता है ताकि लोग उत्सुक होने पर शोध कर सकें। 'git show' पहले से ही एक और कमांड है जो एक कमिटमेंट दिखाता है, और तकनीकी रूप से कुछ भी नहीं होता है कि आपको रिमोट नामक
ओरिजिनल


24

सरल! जब आप इस तरह से एक कमांड चलाते हैं तो "मूल" सिर्फ वही होता है जिसे आपने अपने रिमोट रिपॉजिटरी में शामिल किया है:

git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git

तब से गिट को पता है कि "मूल" उस विशिष्ट भंडार (इस मामले में गिटहब भंडार) को इंगित करता है। आप इसे "जीथब" या "रेपो" या जो भी आप चाहते थे, नाम दे सकते थे।


19

मैं भी इससे भ्रमित था, और नीचे जो मैंने सीखा है, वह है।

जब आप एक रिपॉजिटरी को क्लोन करते हैं, उदाहरण के लिए गिटहब से:

  • originउस URL का उपनाम है जिसमें से आपने रिपॉजिटरी को क्लोन किया था। ध्यान दें कि आप इस उपनाम को बदल सकते हैं।

  • masterदूरस्थ रिपॉजिटरी (इसके द्वारा अलियास origin) में एक शाखा है । masterस्थानीय रूप से बनाई गई एक और शाखा भी है ।

इस एसओ प्रश्न से आगे की जानकारी प्राप्त की जा सकती है: गिट ब्रांचिंग: मास्टर बनाम मूल / मास्टर बनाम रीमोट्स / मूल / मास्टर


11

जब आप एक रिपॉजिटरी के साथ क्लोन करते हैं git clone, तो यह स्वचालित रूप से एक दूरस्थ कनेक्शन बनाता है जिसे originक्लोन रिपॉजिटरी में वापस इंगित किया जाता है। यह केंद्रीय रिपॉजिटरी की एक स्थानीय प्रति बनाने वाले डेवलपर्स के लिए उपयोगी है क्योंकि यह अपस्ट्रीम परिवर्तन को खींचने या स्थानीय कमिट प्रकाशित करने का एक आसान तरीका प्रदान करता है। यह व्यवहार इसलिए भी है क्योंकि अधिकांश गिट-आधारित परियोजनाएं अपने केंद्रीय भंडार मूल को बुलाती हैं।


3

यहाँ सबसे अच्छा जवाब:

https://www.git-tower.com/learn/git/glossary/origin

गिट में, "मूल" रिमोट रिपॉजिटरी के लिए एक शॉर्टहैंड नाम है जिसे मूल रूप से एक परियोजना से क्लोन किया गया था। अधिक सटीक रूप से, इसका उपयोग उस मूल रिपॉजिटरी के URL के बजाय किया जाता है - और इससे रेफ़रिंग बहुत आसान हो जाती है।


0

से https://www.git-tower.com/learn/git/glossary/origin :

गिट में, "मूल" रिमोट रिपॉजिटरी के लिए एक शॉर्टहैंड नाम है जिसे मूल रूप से एक परियोजना से क्लोन किया गया था। अधिक सटीक रूप से, इसका उपयोग उस मूल रिपॉजिटरी के URL के बजाय किया जाता है - और इससे रेफ़रिंग बहुत आसान हो जाती है।

ध्यान दें कि उत्पत्ति का अर्थ "जादुई" नाम नहीं है, लेकिन सिर्फ एक मानक सम्मेलन है। यद्यपि यह समझ में नहीं आता है कि इस सम्मेलन को अछूता छोड़ दिया जाए, आप बिना किसी कार्यक्षमता को खोए इसे पूरी तरह से बदल सकते हैं।

निम्न उदाहरण में, "क्लोन" कमांड का URL पैरामीटर क्लोन किए गए स्थानीय रिपॉजिटरी के लिए "मूल" बन जाता है:

git clone https://github.com/gittower/git-crash-course.git

जब आप दूसरों द्वारा लिखी गई सामग्री की नकल करते हैं, तो आपको यह स्पष्ट करना चाहिए कि आप ऐसा कर रहे हैं, और आपको हमेशा स्रोत का लिंक शामिल करना चाहिए। अन्यथा यह साहित्यिक चोरी है, और यह उत्तर को नष्ट करने का एक कारण है। इसके अलावा, आपका जवाब पहले ही पोस्ट किया जा चुका था
फैबियो का कहना है कि मोनिका

0

अन्य उत्तर कहते हैं कि दूरस्थ रिपॉजिटरी originके URL के लिए एक उपनाम है जो पूरी तरह से सही नहीं है। यह ध्यान दिया जाना चाहिए कि एक पते के साथ शुरू होने httpवाला एक यूआरएल है, जबकि एक के साथ शुरू होता है git@जो एक यूआरआई या यूनिवर्सल रिसोर्स आइडेंटिफ़ायर है।

सभी URL URI हैं, लेकिन सभी URI URL नहीं हैं।

संक्षेप में, जब आप टाइप git remote add origin <URI>करते हैं तो आप अपने स्थानीय git से कह रहे हैं कि जब भी आप उस शब्द का उपयोग करते हैं, जिसका originवास्तव में मतलब है कि आपने जो URI निर्दिष्ट किया है। इसे एक वैरिएबल मान की तरह मानें।

और बस एक चर की तरह, आप इसे नाम कर सकते हैं जो कुछ भी आप चाहते हैं (उदाहरण के लिए। github, heroku, destination, आदि)।


0

रिमोट (रिपॉजिटरी url उर्फ) → मूल (अपस्ट्रीम एलियास) → मास्टर (शाखा उपनाम);

  • remote, स्तर के रूप में ही working directory, index, repository,

  • origin, स्थानीय रिपॉजिटरी शाखा का नक्शा दूरस्थ रिपॉजिटरी शाखा में

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