2010-11-05 11 views
23

गिथब पर रेपो स्थापित करने के बाद, उस रिपो को स्थानीय रेपो में खींचने के दो तरीके हैं।क्लोन और एमकेडीआईआर-> सीडी-> init-> रिमोट-एड-> खींच के बीच क्या अंतर है?

सबसे पहले, मैं एक निर्देशिका बना सकता हूं, रिक्त रेपो शुरू कर सकता हूं, रिमोट जोड़ सकता हूं और फिर रिमोट से परिवर्तन खींच सकता हूं।

> mkdir "exampleProject" 
> cd "exampleProject" 
> git init 
> git remote add origin [email protected]:exampleUser/exampleProject.git 
> git pull origin master 

दूसरा, मैं रिमोट क्लोन कर सकता था।

> git clone [email protected]:exampleUser/exampleProject.git 

उपरोक्त 5 चरण संस्करण के लिए सिर्फ एक शॉर्टकट क्लोनिंग कर रहा है या यह कुछ भी करता है? अगर मैं दूसरे पर एक विधि का उपयोग करता हूं तो क्या मैं कठिनाई में भागूंगा?

+0

मुझे पूरा यकीन है कि यह वही है। वे दोनों रेपो की प्रति बनाते हैं। – Andrey

उत्तर

25

बहुत सारे आदेश, चाहे गिट कमांड या सामान्य प्रोग्राम, एक पंक्ति में चीजें करें जो आप अन्यथा दस में कर सकते हैं। काम बचाने के लिए हमेशा अच्छा रहता है!

उसने कहा, आपके कदम करीब हैं, लेकिन पूरी तरह से नहीं, git clone क्या करता है। मैं कुछ अंतर के बारे में सोच सकते हैं, सभी शाखाओं के साथ क्या करना:

  • हैं, तो किसी कारण से, दूरदराज के HEAD गुरु नहीं है, क्लोन सही काम करेंगे - आप नाम के एक शाखा देना मास्टर के बजाए रिमोट के समान। यह दुर्लभ है, लेकिन इसके बारे में जागरूक होने के लिए एक अच्छी जानकारी है।

  • आपकी git pull कोई दूरस्थ शाखा नहीं बनाएगी। अगर रिमोट की कई शाखाएं हैं, तो क्लोन रिमोट शाखाएं remotes/origin/foo, remotes/origin/bar ... आपके भंडार में बनाता है। एक git fetch origin आपके सूचीबद्ध चरणों में इसका ख्याल रखेगा।

  • आपने मूल की ट्रैक करने के लिए अपनी मास्टर शाखा भी स्थापित नहीं की है, जो क्लोन करता है। आप इसे अपने सूचीबद्ध चरणों में git config branch.master.remote origin; git config branch.master.merge refs/heads/master के रूप में जोड़ सकते हैं। यह बहुत महत्वपूर्ण है - आपके चरणों के साथ, यदि आपके पास मास्टर चेक आउट है और आप गिट पुल टाइप करते हैं, तो यह नहीं पता होगा कि क्या करना है।

यह संभव है कि मैंने एक या दो चीज़ों को याद किया हो। कठिनाइयों एक ही रास्ता या अन्य, यहां तक ​​कि यदि आप कोई डिफ़ॉल्ट क्लोन और एक "मैनुअल क्लोन" के बीच सभी मतभेदों को दूर लौह संभालने का सवाल है, मेरी सलाह git clone एक नए अंदाज़ में किया जाएगा नहीं करने के लिए:

  • यह कम है। और काम क्यों करते हैं?

  • इसके व्यवहार को बदलने के लिए आसान विकल्प हैं। --shared जैसी चीजें आपके सूचीबद्ध कमांड में जोड़ना वाकई मुश्किल हो जाएंगी।

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

+1

आपके उत्तर के लिए धन्यवाद! यह बहुत उपयोगी था। पूछने का मेरा कारण यह नहीं है क्योंकि मैं क्लोन को फिर से शुरू करना चाहता हूं बल्कि यह समझने के बजाय कि यह क्या कर रहा है लेकिन आपकी सलाह बहुत मान्य है। –

+0

@Rupert: आह, ठंडा।मुझे लगता है कि यह तथ्य था कि आपने मैन्युअल विधि को पहले सूचीबद्ध किया था जिससे मुझे लगता है कि आप इसका उपयोग करने पर विचार कर रहे थे। – Cascabel

+0

@ जेफ्रोमी: उन दो 'गिट कॉन्फ़िगरेशन' कमांड के साथ आप जो कर रहे हैं, वह करने का एक और तरीका यह है: 'गिट शाखा - सेट-अपस्ट्रीम मास्टर मूल/मास्टर' जो वही '[शाखा" मास्टर "] अनुभाग जोड़ता है '.git/config' फ़ाइल। यह 'गिट शाखा - ट्रैक मास्टर मूल/मास्टर' की तरह है, सिवाय इसके कि जब आप मास्टर शाखा पहले से ही स्थानीय रूप से मौजूद हों तो इसका उपयोग करें। – bjnord

संबंधित मुद्दे