.It निर्देशिका के बिना ही क्लोन क्लोन करें


144

क्या gitकोई क्लोन करते समय पास करने के लिए एक झंडा है , कहते हैं कि .gitनिर्देशिका क्लोन नहीं है ? यदि नहीं, .gitतो क्लोन के बाद निर्देशिका को हटाने के लिए ध्वज के बारे में कैसे ?


41
यह प्रश्न "git एक्सपोर्ट" ("svn एक्सपोर्ट" की तरह) करने का तरीका नहीं है । यह सवाल कैसे करने के बारे में पूछता है क्लोन एक (रिमोट) भंडार के बिना निर्देशिका। कथित द्वैध एक मौजूदा भंडार को निर्यात करने का तरीका पूछता है जहां आपके पास पहले से ही निर्देशिका है। .git.git
mknaf

3
इस बात से सहमत। आप git archive"संभव डुप्लिकेट" समाधान के अनुसार रिपॉजिटरी को दूरस्थ नहीं कर सकते ।
व्लादिस्लाव रैस्ट्रुसनी

जवाबों:


214

उपयोग

git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git
  • गहराई विकल्प उस रेपो को प्राप्त करने के लिए कम से कम इतिहास की नकल करना सुनिश्चित करेगा।
  • शाखा विकल्प वैकल्पिक है और यदि निर्दिष्ट नहीं है तो मास्टर मिलेगा।
  • दूसरी पंक्ति आपकी निर्देशिका dirformynewrepoको Git भंडार नहीं बना देगी ।
  • यदि आप पुनरावर्ती सबमॉड्यूल क्लोन कर रहे हैं, तो गहराई और शाखा पैरामीटर सबमॉड्यूल पर लागू नहीं होते हैं।

19
क्या !$/.gitमतलब है?
जुरगेन पॉल

15
रुचि रखने वालों के लिए, यह शब्द डिज़ाइनर में से एक है , जो बैश और ज़श में इतिहास विस्तार सुविधा का हिस्सा है ।
रफ़लविंड

क्या रेपो में सभी शाखाओं की गहराई = 1 प्राप्त करने का एक तरीका है? सिर्फ गुरु या निर्दिष्ट शाखा नहीं
गायन पथिराज

2
आप - the- सिंगल-ब्रांच ऑप्शन के साथ करते हैं, क्योंकि --depth का मतलब है - सिंगल्स-ब्रांच, आप इसे -no-सिंगल-ब्रांच के साथ अन-इम्प्लीमेंट कर सकते हैं। (गिट क्लोन मैन पेज से लिया गया)
रॉबर्ट स्टोडर्ड

8
का उपयोग करना !$है, जबकि तकनीकी रूप से इस मामले में सही, मदद लोग हैं, जो पहचान नहीं पा रहे वाक्य रचना वास्तविक सवाल का जवाब समझने के लिए कुछ नहीं करता है। यह पहले के बाद दूसरे कमांड पर भी निर्भर करता है, और एक ही शेल के भीतर। यदि कोई उन अंतर्निहित आवश्यकताओं को छोड़ देता है, तो वे पूरी तरह से कुछ और हटा सकते हैं। इसलिए मेरा सुझाव dirformynewrepoहै कि rmकमांड के तर्क के रूप में नाम को स्पष्ट रूप से निर्दिष्ट करके आपके उत्तर में सुधार किया जा सकता है क्योंकि यह दोनों कमांड कमांडरों के बीच संबंध को स्पष्ट कर देगा।
davidA

29

चूंकि आप केवल फाइलें चाहते हैं, इसलिए आपको इसे git रेपो के रूप में व्यवहार करने की आवश्यकता नहीं है।

rsync -rlp --exclude '.git' user@host:path/to/git/repo/ .

और यह केवल स्थानीय पथ और दूरस्थ ssh / rsync पथ के साथ काम करता है, यह काम नहीं कर सकता है यदि दूरस्थ सर्वर केवल git: // या https: // एक्सेस प्रदान करता है।


यह नहीं माना जाएगा।
जेजे रोमन

यह सही है, यह सिर्फ काम के पेड़ की नकल है। git checkout ठीक से करता था, अब वह नहीं है।
सिल्वेन

इसलिए, यदि सर्वर केवल git प्रदान करता है तो आप क्या करते हैं: // access?
रेनब

3

वैकल्पिक रूप से, यदि आपके पास Node.js स्थापित है, तो आप निम्न कमांड का उपयोग कर सकते हैं:

npx degit GIT_REPO

npxनोड के साथ आता है, और यह आपको पहले स्थापित किए बिना द्विआधारी नोड-आधारित पैकेज चलाने की अनुमति देता है (वैकल्पिक रूप से, आप पहले degitविश्व स्तर पर उपयोग करके स्थापित कर सकते हैं npm i -g degit)।

डीगिट , रिच हैरिस द्वारा बनाया गया एक उपकरण है, जो स्वेल्ट और रोलअप के निर्माता हैं, जिसका उपयोग वह जल्दी से गिट फ़ोल्डर को रखे बिना रिपॉजिटरी को क्लोन करके एक नई परियोजना बनाने के लिए करता है। लेकिन इसका इस्तेमाल किसी भी रेपो को एक बार क्लोन करने के लिए भी किया जा सकता है ...


-1

आप हमेशा कर सकते हैं

git clone git://repo.org/fossproject.git && rm -rf fossproject/.git

44
सब कुछ डाउनलोड करें और बाद में डायर को हटा दें? उदाहरण के लिए एमएसीएस में .GB का 95% हिस्सा है। so --depth = 1 यहाँ स्पष्ट रूप से समाधान है।
आरपारडॉक्स

1
मैं अभी भी .it फ़ोल्डर को देखता हूं जब मैं गहराई करता हूं = 1
आर्येह अरमान

@AryehArmon बेशक आप इसे देखें। --Depth का उपयोग .git के निर्माण को नहीं रोकता है, यह सिर्फ इसे उथले प्रतिलिपि बनाता है, ताकि ।गित के लिए बहुत छोटा आकार हो। लेकिन अगर आप इसे वहां नहीं चाहते हैं, तो आपको इसे बाद में हटाने की जरूरत है।
zeycus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.