2009-09-30 11 views
7

गिट में, मैं अपने रिमोट/ट्रैकिंग शाखा के हेड संस्करण को कैसे देख सकता हूं? असल में, मैं गिट में 'svn checkout' करना चाहता हूं।मैं अपने रिमोट/ट्रैकिंग शाखा के HEAD संस्करण को कैसे देख सकता हूं

मुझे लगता है कि मुझे लगता है कि सबसे नज़दीकी चीज 'गिट फ़ेच' है, लेकिन मैन पेज से, मुझे नहीं पता कि इसका उपयोग करके 1 विशेष फ़ाइल कैसे जांचें?

उत्तर

4

गिट में एक फ़ाइल को पुनर्प्राप्त करने की धारणा नहीं है। यह हमेशा नेटवर्क भर में चलता है।

कुछ रिमोट रिपोजिटरी के git clone करने के बाद, आप git checkout remotename/branch कर सकते हैं ताकि आपकी कार्य प्रतिलिपि में उस शाखा पर नवीनतम फ़ाइल संस्करण हो। यदि आप उन्हें संशोधित करना चाहते हैं, तो आपको स्थानीय शाखा शुरू करने के लिए git checkout -b <yourbranchname> remotename/branch होना चाहिए। यह बेहतर

git branch --track mybranchname remotename/branchname 
git checkout mybranchname 

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

15

पहला, एक नोट: रिमोट रिपोजिटरी में एक से अधिक शाखाएं हो सकती हैं; हेड का मतलब है (स्थानीय विकास और स्थानीय शाखाओं के लिए) वर्तमान में शाखा की जांच की गई है, और दूरदराज के दूरस्थ रिमोट ट्रैकिंग शाखा (प्रतीकात्मक संदर्भ) remote/HEAD का अर्थ दूरस्थ पर डिफ़ॉल्ट शाखा है। 'शाखा के सिर' जैसी कोई चीज नहीं है; हेड शाखा के लिए एक सूचक है (या कभी-कभी प्रतिबद्धता के लिए)।

दूसरा, गिट पूरे वृक्ष स्तर (भंडार में सभी फाइलों) पर (Novelocrat wrote) चलाता है। गिट में आप एक शाखा चेकआउट करते हैं (हालांकि आप कुछ शाखा से फ़ाइल संस्करण को भी कार्यशील निर्देशिका में चेकआउट कर सकते हैं, यह कम कॉमकॉन ऑपरेशन है)।


गिट में आप केवल कुछ स्थानीय शाखाओं के शीर्ष पर नई प्रतिबद्धता बना सकते हैं। आप रिमोट-ट्रैकिंग शाखाओं पर सीधे काम नहीं कर सकते हैं, क्योंकि वे दूरस्थ भंडार की शाखाओं का पालन करने के लिए हैं (और आप अपना काम खोने पर खो देंगे)।

इसलिए सरल "git checkout origin" (यह मानते हुए कि दूरदराज के origin कहा जाता है) है, जो "git checkout origin/HEAD" है, जो आमतौर पर है के लिए शॉर्टकट है "git checkout origin/master" रिमोट ट्रैकिंग शाखा के एक राज्य चेकआउट होगा अनाम शाखा में है, इसलिए अलग बुलाया सिर। यह एक अच्छा समाधान है यदि आप केवल रिमोट-ट्रैकिंग शाखा स्थिति को देखना/ब्राउज़ करना चाहते हैं।

यदि आप का उपयोग करें "git checkout --track origin/master" स्थानीय शाखा master, जो पालन (ट्रैक) रिमोट ट्रैकिंग शाखाorigin/master करने के लिए है पैदा करेगा। ध्यान दें कि गिट-क्लोन स्वचालित रूप से दूरस्थ origin (आमतौर पर origin/master) की डिफ़ॉल्ट शाखा (origin/HEAD) के लिए ऐसी स्थानीय शाखा (आमतौर पर master) सेट करता है, इसलिए आपको ऐसा करने की आवश्यकता नहीं है। फिर शाखा master पर "git pull" सरल होगा (यदि आवश्यक हो), और रिमोट रिपोजिटरी में संबंधित शाखा में परिवर्तनों के साथ अपने स्थानीय परिवर्तनों को मर्ज करने का प्रयास करें। अगर रिमोट में कोई बदलाव नहीं आया है, तो यह "अद्यतित" स्थिति है और आपकी स्थानीय शाखा नहीं बदलेगी; अगर आपकी स्थानीय शाखा में कोई बदलाव नहीं आया लेकिन रिमोट में था, तो स्थानीय शाखा बस रिमोट-ट्रैकिंग शाखा की स्थिति में उन्नत है, जिसे "फास्ट-फॉरवर्ड" कहा जाता है। आप "" के बारे में सोच सकते हैं, "svn update" के बहुत मोटे समकक्ष के रूप में।

आप अपनी स्थानीय शाखा को पर रिमोट-ट्रैकिंग शाखा "git reset --hard origin" के साथ रिवाइंड कर सकते हैं।ध्यान दें कि --hard का अर्थ है कार्यशील निर्देशिका के ओवरराइट को मजबूर करने के लिए, इसलिए कोई भी असम्बद्ध परिवर्तन खो जाएगा! देखभाल के साथ प्रयोग करें।

अंत में आप रिमोट ट्रैकिंग शाखा से एकल फाइल की जाँच करना चाहते हैं (यानी के रूप में यह रिमोट ट्रैकिंग शाखा में है फ़ाइल की निर्देशिका संस्करण में काम करने में है करने के लिए), तो आप बस की 'pathspec' फार्म का उपयोग कर सकते हैं गिट-चेकआउट, अर्थात् "git checkout origin -- file"। अगर आप केवल यह देखना चाहते हैं कि फ़ाइल दूरस्थ-ट्रैकिंग शाखा में कैसा दिखता है, तो "git show origin:path/to/file" का उपयोग करें।

HTH

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