के साथ विशिष्ट निर्देशिका को कैसे खींचें मेरे पास गिट के साथ एक प्रोजेक्ट है, और मैं सिर्फ एक विशिष्ट निर्देशिका को क्लोन करना या खींचना चाहता हूं, जैसे myproject/जावास्क्रिप्ट जैसे सबवर्सन करता है।
कुछ बदलाव करें, प्रतिबद्ध करें और दोबारा दबाएं।
यह संभव है?गिट
गिट
उत्तर
- अपने रेपो प्रतिलिपि के शीर्ष में सीडी
git fetch
git checkout HEAD path/to/your/dir/or/file
- कहाँ "
path/...
" में (3) निर्देशिका पर शुरू होता है बस नीचे दिए गए रेपो जड़ युक्त अपने ".../file
"
- कहाँ "
यह जवाब है ... धन्यवाद! – Paul
बस एहसास हुआ कि मैंने इस सवाल को गलत समझा। मेरा जवाब इसके बजाय एक फ़ाइल को चेकआउट करने का तरीका बताता है, जिसे संशोधित और प्रतिबद्ध किया जा सकता है। – vergueishon
आपने प्रश्न के शीर्षक को संबोधित किया, जो कि काफी अच्छा है। यह सिर्फ मुझे बचाया, जहां तक मेरा संबंध है, यह सही जवाब है - खासकर जब से इस मुद्दे के लिए Google पर यह शीर्ष हिट था। – Morgon
यह संभव नहीं है। आपको सभी भंडार या कुछ भी खींचने की जरूरत नहीं है।
भले ही आपको * सबकुछ * लाने की ज़रूरत है, फिर भी इस मामले में एक स्पैर चेकआउट काम करने वाले पेड़ पर एक खींच होगी? Http://stackoverflow.com/questions/2416815/how-to-git-pull-all-but-one-folder/2416991#2416991 – VonC
बस इसे जोड़ने के लिए, कारण है कि आप केवल एक निर्देशिका खींच नहीं सकते हैं क्योंकि गिट डेटा अर्थात् ट्रैकिंग का उपयोग करता है, अर्थपूर्ण ट्रैकिंग फ़ाइल नहीं करता है, इसलिए आप स्रोत ट्रैकिंग सिस्टम (जब तक आप अपडेट नहीं करते हैं) को बताने के बिना फ़ाइलों में और बाहर कोड (या अन्य डेटा) को निर्बाध रूप से स्थानांतरित कर सकते हैं। इस वजह से, कोड स्थानांतरित हो सकता है निर्देशिकाओं में और बाहर भी निर्बाध रूप से, इसलिए केवल एक निर्देशिका को पकड़ना ज्यादा समझ में नहीं आता है। उम्मीद है की यह मदद करेगा। – OmnipotentEntity
वर्ग्यूशन का उत्तर नीचे मेरे लिए काम किया। – Paul
शिंगारा सही है। इस व्यवहार का एक स्पष्टीकरण this mailing list thread में दिया गया है। यदि आप वास्तव में ऐसा करना चाहते हैं, तो आप जावास्क्रिप्ट डीआईआर को एक सबमिशन बना सकते हैं।
आपने अपनी टिप्पणी में प्रश्न का उत्तर नहीं दिया, आपने एक लिंक प्रदान किया। यदि लिंक कभी भी मर जाता है तो आपका लिंक बेकार है, जैसा आपका जवाब है। इसके अलावा लिंक पर क्या बहुत संक्षिप्त और पढ़ने में आसान नहीं है। यदि आपका लिंक सारांश में था या सरलीकृत किया गया तो आपका उत्तर उपयोगी होगा। – leetNightshade
कभी-कभी, आप बस diff के माध्यम से जाने के rigmarole के बिना फ़ाइलों की पिछली प्रतियों पर एक नज़र रखना चाहते हैं।
ऐसे मामले में, एक रिपोजिटरी का क्लोन बनाना और उस विशिष्ट प्रतिबद्धता को चेकआउट करना आसान है जिसमें आप रुचि रखते हैं और उस क्लोन रिपोजिटरी में उपनिर्देशिका को देखें। चूंकि सबकुछ स्थानीय है, इसलिए जब आप पूरा कर लेंगे तो आप इस क्लोन को हटा सकते हैं।
मैं देखता हूं। मैं submodules बनाने की कोशिश करेंगे और देखें कि मेरे लिए काम करता है या नहीं। मैं परिणामों की रिपोर्ट करूंगा। संपादित करें: स्पैस चेकआउट और submodules मेरे लिए काम किया।लिंक मैं (VonC और मिशेल जेंसन द्वारा दिए गए) के बारे में पढ़ा करते थे:
How to git-pull all but one folder
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
गिट की उप-मॉड्यूल सुविधा विशेष रूप से अच्छी तरह लागू नहीं होती है। वे काम करने के लिए बहुत अजीब और भ्रमित हो सकते हैं। मैं व्यक्तिगत रूप से गिट सब-मॉड्यूल से स्पष्ट रूप से स्पष्ट हो जाता हूं जब तक कि सभी कंकों को लोहे से बाहर नहीं किया जाता है। – user2268788
शायद यह आदेश सहायक हो सकता है:
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
"एट देखा"
यह फ़ाइल की एक विशिष्ट निर्देशिका डाउनलोड करता है संग्रह उद्देश्यों के लिए, यह एक प्रतिलिपि नहीं खींचता है जिसे आप संशोधित कर सकते हैं और वापस धक्का दे सकते हैं। – leetNightshade
एक खाली निर्देशिका में:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
यह स्वीकार्य उत्तर नहीं था जब यह मेरे लिए काम किया। –
यह ओपी का सही जवाब है। –
यह काम करता है यदि आप केवल स्थानीय फ़ाइल को प्रतिस्थापित करने के लिए फ़ाइल के दूरस्थ संस्करण का उपयोग करना चाहते हैं, तो मुझे लगता है कि – John
ज्यादा, एक जवाब की तलाश में नहीं लग रहा दे, फिर से और इतने पर की कोशिश कर रहा, के बाद, मैं अंत में करने के लिए एक समाधान नहीं मिला यह एक और एसओ सूत्र में:
How to git-pull all but one folder
में कॉपी-पेस्ट क्या नहीं है:
git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull origin master
ओपी चाहता है (केवल एक डीआईआर पर काम करें) करने के लिए, ऊपर दिए गए चरणों को करते समय, उस डीआईआर को .git/info/sparse-checkout
पर जोड़ें।
@cforbish के लिए बहुत सारे धन्यवाद!
मैं इसे यहां पोस्ट कर रहा हूं क्योंकि जब भी मैं Google को यह करने का प्रयास करता हूं, तो यह एक शीर्ष परिणाम है, और वह धागा है प्रदर्शित होने के करीब भी नहीं। :(मुझे बुरा प्रतिलिपि लग रहा है, लेकिन मुझे लगता है कि यह सबसे अच्छा प्रथा है? – msb
स्पैस चेकआउट आपको रूचि दे सकता है (भले ही आपको अभी भी सबकुछ लाने की आवश्यकता हो): http://stackoverflow.com/questions/2416815/how-to-git-pull-all-but-one-folder/2416991# देखें 24169 9 1 – VonC