2013-04-18 8 views
8

क्या रिमोट गिट रेपो को प्रतिबद्ध करने के लिए कोई तरीका है, बिना किसी रेपो के स्थानीय क्लोन के?रिमोट रेपो में फ़ाइल को कैसे अपडेट करें, बिना रेपो क्लोनिंग के पहले?

मेरे पास रिमोट रेपो के लिए एक वैध यूआरएल है, मुझे फ़ाइल का पथ पता है, और मैं बस इतना करना चाहता हूं कि फ़ाइल के एक अद्यतन संस्करण को मास्टर पर धक्का दें। आदर्श रूप से मैं इसे किसी भी वैध रिमोट रेपो यूआरएल के साथ काम करना चाहता हूं, लेकिन यह तब भी सहायक होगा यदि यह केवल https- आधारित गिट यूआरएल के साथ काम करता है।

मुझे लगता है कि यह असंभव है, क्योंकि यह सामान्य मामले में क्लोनिंग किए बिना एक फ़ाइल को पुनर्प्राप्त करने के लिए संभव नहीं है, उत्तर How to "git show" on a remote repo? के उत्तर के अनुसार। लेकिन मुझे उम्मीद है कि एक वर्कअराउंड है जो निम्न स्तर के गिट कमांड का उपयोग करता है।

+1

ऐसा मत सोचो कि यह संभव है, और न ही यह वास्तव में, आप पूरी जगह में पूरी रिपो के बिना फ़ाइलों को क्यों संपादित करेंगे? –

+1

यदि रिमोट रेपो [github] (http://github.com) पर होस्ट किया गया है, तो आप सीधे फ़ाइल को संपादित कर सकते हैं। अन्यथा मुझे नहीं लगता कि यह संभव है। –

+1

@MadaraUchiha क्यों? क्योंकि कभी-कभी आपको केवल बड़े पैमाने पर रेपो में एक छोटा बदलाव करने की आवश्यकता होती है, और पूरी चीज को क्लोन करने में काफी समय लगता है। मेरे मामले में, एक प्रबंधन ऐप को सैकड़ों गिट रेपो में निहित मेटाडेटा अपडेट करने की आवश्यकता है, लेकिन केवल उस उद्देश्य के लिए उन सभी की स्थानीय प्रतियों को बनाए रखना नहीं चाहता है। – algal

उत्तर

7

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

+0

दिलचस्प विशेषता! मैन पेज कहता है: _ आप इसे क्लोन या प्राप्त नहीं कर सकते हैं, ** न ही इसमें से और न ही इसमें ** _।तो भले ही आप इसे पैच बनाने और पैच को व्यक्तिगत रूप से भेजने के लिए उपयोग कर सकें, यह स्वचालित रूप से परिवर्तनों को धक्का देने में आपकी सहायता नहीं करेगा। – Shahbaz

+0

@Shahbaz मैनुअल वास्तव में गलत है, आप इसे ठीक से दबा सकते हैं ... – poke

+0

@poke, मैंने कोशिश नहीं की है, लेकिन यदि आप निश्चित हैं, तो मैन्युअल पृष्ठ पर एक बग रिपोर्ट दर्ज करने पर विचार करें। – Shahbaz

3

नहीं, मुझे नहीं लगता कि यह संभव है। काम करने के लिए आपको पूरे भंडार को क्लोन करने की जरूरत है। गिट को अपनी नौकरी सही तरीके से करने के लिए सभी फाइलों और .git के बारे में जानना आवश्यक है। यही कारण है कि आप इस तरह मनमानी फाइलों को धक्का नहीं दे सकते।

1

@algal, आपके विशेष उपयोग-मामले के लिए, आप एक सबमिशन (http://git-scm.com/docs/git-submodule) का उपयोग करने में सक्षम हो सकते हैं। आप "सुपरमॉड्यूल" क्लोनिंग करते हुए सबमिशन को क्लोन और प्रतिबद्ध कर सकते हैं जिसमें आपके द्वारा उल्लिखित "विशाल" कोड हो सकता है। सुपरमॉड्यूल आपके द्वारा उल्लिखित कॉन्फ़िगरेशन जानकारी के लिए सबमिशन का संदर्भ दे सकता है।

0

हाँ आप उपयोग कर tagging

इस

कदम अपने नई परियोजना जड़ में पालन एक नया संस्करण धक्का कर सकते हैं

  1. git init
  2. git remote add origin [email protected]:yourusername/yourpoject
  3. git tag -a v2.0 -m 'version 2.0'
  4. git add .
  5. git commit -m "New Version 2.0 :rocket:"
  6. git push -u origin v2.0

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

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