Git उथले क्लोन को पूर्ण क्लोन में कैसे बदलें?


214

इस तथाकथित सवाल का अनुवर्ती : अगर मेरे पास एक उथला क्लोन है, तो इसे पूरा क्लोन बनाने के लिए सभी पुराने कमिट कैसे प्राप्त करें?


4
क्या आप @ sdram के उत्तर को चिन्हित करना चाहते हैं? यह सही है।
Ionică Bizău

जवाबों:


93

संपादित करें: git fetch --unshallow अब एक विकल्प है (धन्यवाद जैक ओ'कॉनर)।

आप चला सकते हैं git fetch --depth=1000000(यह मानते हुए कि भंडार में एक मिलियन से कम आवागमन है)।


238
अब यह git fetch --unshallowमौजूद है (जैसा कि @ sdram के उत्तर में है), यह उत्तर अब सबसे अच्छा नहीं है।
जैक ओ'कॉनर

1
@ sdram के उत्तर ने मेरे लिए काम नहीं किया (git संस्करण 2.1.1), लेकिन इस उत्तर ने ऐसा किया।
- एसई बुराई है

2
मेरे लिए न तो जवाब ने काम किया। दोनों कमांड सभी लापता कमानों को लाने में सफल रहे, लेकिन जब मैं नए कमिट्स को आगे बढ़ाने की कोशिश करता हूं, तो मुझे सर्वर के बारे में एक त्रुटि मिलती है कि वह 'उथले' के बारे में नहीं जानता है
Tyguy7

3
git fetch --depth=2147483647कमांड को प्रदान करने के लिए सबसे बड़ी संभव गहराई है।
क्लैक

5
मैंने उपयोग किया git fetch --unshallow, लेकिन यह अभी भी सभी शाखाओं को नहीं दिखाता है।
सिड

674

नीचे दिया गया कमांड (git संस्करण 1.8.3) उथले क्लोन को नियमित रूप से परिवर्तित कर देगा

git fetch --unshallow

फिर, मूल पर सभी शाखाओं तक पहुँच प्राप्त करने के लिए (धन्यवाद @ टिप्पणी में पाटर)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

36
यह -सिंगल-शाखा साइड इफेक्ट को पूर्ववत नहीं करता है। ऐसा करने के लिए, .git / config और change fetch = + refs / heads / BRANCHNAME: refs / remotes / origin / BRANCHNAME को लाने के लिए = + refs / heads / *: refs / remotes / मूल / *
पीटर कॉर्डेस

3
यह दूरस्थ शाखाओं पर नज़र रखने वाली स्थानीय शाखाएँ नहीं बनाता है, इसलिए आपको अभी भी उस सेट को प्राप्त करने के लिए -b BRNAME मूल / BRNAME को चेकआउट करना होगा।
पीटर कॉर्ड्स

26
यह भी देखें stackoverflow.com/questions/17714159/... : git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"; git fetch origin एक जवाब से editting .git / config हाथ से के रूप में ही होना चाहिए
पीटर Cordes

यह केवल तभी काम करता है जब रेपो को उथले के रूप में चिह्नित किया जाता है। मुझे याद नहीं है कि कैसे, लेकिन ऐसी परिस्थितियाँ हैं जहाँ आप स्पष्ट रूप से उथले क्लोन किए बिना एक अपूर्ण रेपो के साथ समाप्त हो सकते हैं। @ svick's stackoverflow.com/a/6802238/260122 हर बार काम करने वाला उत्तर है।
क्लैक

git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'मेरे लिए काम किया
gzaripov

19

मुझे रेपो को केवल एक विशेष प्रतिबद्धता के लिए गहरा करने की आवश्यकता थी।

पढ़ने के बाद man git-fetch, मुझे पता चला कि कोई एक वचन नहीं दे सकता, लेकिन एक तारीख निर्दिष्ट कर सकता है:

git fetch --shallow-since=15/11/2012

जिन्हें वृद्धिशील गहरीकरण की आवश्यकता है, उनके लिए एक और manउद्धरण:

--deepen=<depth>

--Depth के समान, सिवाय इसके कि यह प्रत्येक रिमोट कंट्रोल इतिहास के टिप से वर्तमान उथली सीमा से कमिट की संख्या को निर्दिष्ट करता है।



0

उपरोक्त संदेशों में से किसी ने भी चाल नहीं चली। मैं उथले क्लोन से शुरू होने वाले गिट टैग के साथ काम करने की कोशिश कर रहा हूं।

पहले मैंने कोशिश की

git fetch --update-shallow

किस तरह के माध्यम से आधा काम किया। फिर भी, कोई टैग उपलब्ध नहीं है!

git fetch --depth=1000000

इस अंतिम कमांड ने वास्तव में टैग पा लिए और मैं आखिरकार निष्पादित कर सका

git checkout -b master-v1.1.0 tags/v1.1.0

और इसके साथ किया जाए।

HTH

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.