Git में, मूल / गुरु बनाम मूल गुरु के बीच अंतर क्या है?


290

मुझे पता है, मूल दूरस्थ रिपॉजिटरी के लिए एक शब्द है और मास्टर वहां शाखा है।

मैं यहां जानबूझकर "संदर्भ" को छोड़ रहा हूं और मैं उम्मीद कर रहा हूं कि उत्तर संदर्भ पर निर्भर नहीं होना चाहिए। तो git कमांड लाइन में, ओरिजिनल / मास्टर और ओरिजिनल मास्टर में क्या अंतर है । क्या यह समझने का एक गैर-अस्पष्ट तरीका है कि मूल / मास्टर का उपयोग कब करें और मुझे मूल मास्टर का उपयोग कब करना चाहिए ?


जवाबों:


392

यहां वास्तव में तीन चीजें हैं: origin masterदो अलग चीजें हैं, और origin/masterएक चीज है। कुल तीन चीजें।

दो शाखाएँ:

  • master एक स्थानीय शाखा है
  • origin/masterएक दूरस्थ शाखा है (जो "मूल" नामक रिमोट पर "मास्टर" नामक शाखा की एक स्थानीय प्रति है)

एक रिमोट:

  • origin एक रिमोट है

उदाहरण: दो चरणों में खींचो

चूंकि origin/masterएक शाखा है, आप इसे मर्ज कर सकते हैं। यहाँ दो चरणों में एक पुल है:

एक कदम, masterरिमोट से प्राप्त करें origin। इस masterशाखा को originलाया जाएगा और स्थानीय प्रति नाम दिया जाएगा origin/master

git fetch origin master

फिर आप में विलीन origin/masterहो जाते हैं master

git merge origin/master

फिर आप अपने नए परिवर्तनों को masterपीछे धकेल सकते हैं origin:

git push origin master

और ज्यादा उदाहरण

आप नाम से कई शाखाएँ ला सकते हैं ...

git fetch origin master stable oldstable

आप कई शाखाओं को मर्ज कर सकते हैं ...

git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290

5
पहला भाग वास्तव में उपयोगी है। मैं यह नहीं जोड़ सका कि अधिक उदाहरण, विशेष रूप से मर्ज एक लागू है। जवाब के लिए धन्यवाद।
सेंथिल कुमारन

1
... क्योंकि जब मैं "चेकआउट मूल / मास्टर" करता हूं, तो मैं एक अलग राज्य में पहुंच जाता हूं। अगर मेरे पास वास्तव में दूरस्थ मास्टर शाखा की एक स्थानीय प्रति है, तो मैं इस पर काम क्यों नहीं कर सकता और इसे जोड़ सकता हूं? या शायद मैं कर सकता हूँ, लेकिन यह अलग क्यों है?
स्टू

3
आप केवल एक स्थानीय शाखा के लिए प्रतिबद्ध हो सकते हैं, इसलिए जब आप एक दूरस्थ शाखा की जांच करते हैं, तो आपको "अलग किया गया सिर" मिलता है। बेशक, यह एक दूरस्थ शाखा की एक स्थानीय प्रति है, लेकिन यह अभी भी एक दूरस्थ शाखा है। ऐसा कोई नियम नहीं है कि "मास्टर" बिल्कुल "मूल / मास्टर" से संबंधित है, वे पूरी तरह से अलग हो सकते हैं।
डिट्रिच एप्प

7
@ Jwan622 "मूल एक दूरस्थ" ... "मूल" सिर्फ एक नाम है, आप किसी भी नाम को रीमोट के लिए चुन सकते हैं लेकिन "मूल" डिफ़ॉल्ट नाम है। एक रिमोट कहीं और एक भंडार है। यह GitHub हो सकता है या यह एक अलग कंप्यूटर हो सकता है या यह एक ही कंप्यूटर पर कहीं और भी हो सकता है।
डिट्रीच एप्प

2
@ Jwan622: "git Remote add" एक कमांड है जो एक नया रिमोट बनाता है। "उत्पत्ति" वह नाम है जिसे रिमोट जोड़ता है। चूंकि "मूल" सिर्फ एक नाम है, आप चाहें तो एक अलग नाम चुन सकते हैं। उदाहरण के लिए, git remote add home my-server:projects/my-project"होम" नामक रिमोट जोड़ता है। : आप दस्तावेज़ को देखें करना चाह सकते हैं git-scm.com/docs/git-remote
Dietrich Epp

16

origin/masterएक इकाई है (क्योंकि यह एक भौतिक शाखा नहीं है) रिमोट पर शाखा की स्थिति का प्रतिनिधित्व करती है ।masterorigin

origin mastermasterरिमोट पर शाखा है origin

तो हमारे पास ये हैं:

  • मूल / मास्टर (दूरस्थ शाखा के लिए एक प्रतिनिधित्व या एक संकेतक)
  • मास्टर - ( वास्तविक शाखा )
  • <Your_local_branch> ( वास्तविक शाखा )
  • <Your_local_branch2> ( वास्तविक शाखा )
  • <Your_local_branch3> ( वास्तविक शाखा )

उदाहरण (स्थानीय शाखा में master):

git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master

24
यह गलत है ... origin masterएक शाखा नहीं है ... यह वास्तव में दो अलग-अलग चीजें हैं, "मूल" (एक दूरस्थ) और "मास्टर" (एक स्थानीय शाखा)।
डायट्रिच एप्प

दूरस्थ मास्टर शाखा की स्थिति, स्थानीय रूप से मौजूद है, है ना?
सेंथिल कुमारन

4
हाँ यह गलत origin/masterहै दूरस्थ मास्टर शाखा है। स्थानीय शाखा सिर्फ मास्टर है।
अनिकेत ठाकुर

5

origin/masterदूरस्थ masterशाखा है

आमतौर पर git fetch originसर्वर से सभी परिवर्तनों को लाने के लिए, आप git rebase origin/masterअपने परिवर्तनों को वापस करने और शाखा को नवीनतम सूचकांक में स्थानांतरित करने के लिए एक करेंगे । यहां, origin/masterदूरस्थ शाखा का जिक्र है, क्योंकि आप मूल रूप से जीआईटी को origin/masterवर्तमान शाखा पर शाखा को वापस करने के लिए कह रहे हैं ।

origin masterउदाहरण के लिए, आप धक्का देते समय उपयोग करेंगे । git push origin masterबस GIT को दूरस्थ masterशाखा को स्थानीय शाखा में धकेलने के लिए कह रहा है ।


2
ऐसा लगता है कि वास्तव में ओपी की तलाश में सबसे करीब है - origin master'मूल' भंडार में 'मास्टर' पर जो कुछ भी है, उसके साथ कुछ करने के लिए सॉफ्टवेयर बता रहा है। origin/masterउसी तरह से एक संदर्भ है f3a4d5या HEADहै।
निमेसिरियल

4

मूल दूरस्थ git url का एक नाम है। नीचे कई और अधिक उदाहरण दिए जा सकते हैं।

bangalore => bangalore.example.com:project.git

boston => boston.example.com:project.git

जहाँ तक उत्पत्ति / गुरु (उदाहरण के लिए बैंगलोर / मास्टर) जाता है, यह बैंगलौर स्थल पर "मास्टर" की ओर इशारा करता है। आप इसे अपने क्लोन में देखते हैं।

यह संभव है कि जब से आप "भ्रूण" या "पुल" करते हैं, तब से दूरस्थ बैंगलोर उन्नत हो गया है।


2

इस तथ्य को देखते हुए कि आप origin/masterअपने नेटवर्क केबल को अनप्लग होने के दौरान (हालांकि अलग अवस्था में) स्विच कर सकते हैं , यह masterशाखा का स्थानीय प्रतिनिधित्व होना चाहिए origin


ऊपर और नीचे के उत्तर में, लोग कहते हैं कि मूल / मास्टर दूरस्थ मास्टर शाखा है। आपका उत्तर एक तरह का विरोधाभास है जो वे कहते हैं। कृपया समझाएं।
लूना लवगूड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.