मेरे पास git के साथ एक परियोजना है, और मैं सिर्फ एक विशिष्ट निर्देशिका को क्लोन या खींचना चाहता हूं, जैसे myproject / javascript ठीक वैसे ही जैसे तोड़फोड़ करता है।
कुछ बदलाव करें, कमिट करें और फिर से पीछे धकेलें।
यह संभव है?
मेरे पास git के साथ एक परियोजना है, और मैं सिर्फ एक विशिष्ट निर्देशिका को क्लोन या खींचना चाहता हूं, जैसे myproject / javascript ठीक वैसे ही जैसे तोड़फोड़ करता है।
कुछ बदलाव करें, कमिट करें और फिर से पीछे धकेलें।
यह संभव है?
जवाबों:
git fetchgit checkout HEAD path/to/your/dir/or/file
जहाँ " path/..." (3) रेपो रूट के ठीक नीचे निर्देशिका में शुरू होता है जिसमें आपका " .../file" है
ध्यान दें कि "HEAD" के बजाय, एक विशिष्ट कमिट के हैश कोड का उपयोग किया जा सकता है, और फिर आपको उस कमिटमेंट के लिए संशोधन (फ़ाइल) या संशोधन (dir) मिलेगा।
--की आवश्यकता नहीं है। यह बिट्स को एक पथ के रूप में व्याख्या करने के लिए मजबूर करता है। तो, हाँ, अगर आपके पास उस नाम के साथ एक फ़ाइल है --helpजिसे आप चेकआउट करना चाहते हैं, तो इन हाइफ़न के साथ प्रीफ़िक्स करना आवश्यक होगा:git checkout HEAD -- --help
खाली निर्देशिका में:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
fetchया checkoutकमांड की कोई आवश्यकता नहीं है , हम remote addपूरी मास्टर शाखा को प्राप्त करने के लिए कमांड के बाद बस पुल अनुरोध कर सकते हैं ।
बहुत उत्तर की तलाश के बाद, ढूंढना नहीं, छोड़ना, फिर से कोशिश करना और इसी तरह, मैंने आखिरकार एक और सूत्र में इसका हल ढूंढ लिया:
कैसे एक फ़ोल्डर में सभी को खींचने के लिए
कॉपी-पेस्ट करने के लिए क्या है:
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 के लिए बहुत-बहुत धन्यवाद!
master। बस सुनिश्चित करें कि आप git branch --set-upstream-to=origin/<branch>सही ढंग से खींचने के लिए करते हैं
यह मुमकिन नहीं है। आपको सभी रिपॉजिटरी या कुछ भी नहीं चाहिए।
Maybe this command can be helpful :
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
"Et voilà"
यदि आप किसी निर्देशिका में नवीनतम परिवर्तन प्राप्त करना चाहते हैं, तो आप कर सकते हैं:
$ git -C <Path to directory> pull
git clone --filter २.१ ९ से
यह विकल्प वास्तव में सर्वर से अनावश्यक वस्तुओं को लाना छोड़ देगा।
मैंने वर्तमान समर्थन स्थिति की व्याख्या करते हुए एक विस्तृत उत्तर लिखा है: मैं केवल Git रिपॉजिटरी के एक उपनिर्देशिका का क्लोन कैसे बनाऊं?
यह बहुत संभावना है कि git cloneउस क्षेत्र के लिए जो कुछ भी कार्यान्वित किया जाता है उसके git pullअनुरूप भी होंगे ।
इस काम की कोशिश की और परीक्षण किया!
mkdir <directory name> ; //Same directory name as the one you want to pull
cd <directory name>;
git remote add origin <GIT_URL>;
git checkout -b '<branch name>';
git config core.sparsecheckout true;
echo <directory name>/ >> .git/info/sparse-checkout;
git pull origin <pull branch name>
आशा है कि यह मददगार था!
कभी-कभी, आप केवल फ़ाइलों की पिछली प्रतियों पर एक नज़र रखना चाहते हैं, जो कि भिन्नताओं से गुजरने की कठोरता के बिना नहीं होती हैं।
ऐसे मामले में, रिपॉजिटरी का क्लोन बनाना आसान है और उस विशिष्ट कमेंट की जांच करें जिसमें आप रुचि रखते हैं और उस क्लोन रिपॉजिटरी में उपनिर्देशिका पर एक नजर है। क्योंकि सब कुछ स्थानीय है आप बस जब आप कर रहे हैं इस क्लोन को हटा सकते हैं।
सैद्धांतिक फ़ाइल पथों और मेरे जैसे उदाहरणों के साथ संघर्ष करने वाले सभी के लिए, यहां एक वास्तविक दुनिया उदाहरण है: Microsoft अपने डॉक्स और उदाहरणों को गिट हब पर प्रस्तुत करता है, दुर्भाग्य से वे इस भंडार में बड़ी मात्रा में विषयों के लिए अपने सभी उदाहरण फ़ाइलों को इकट्ठा करते हैं:
https://github.com/microsoftarchive/msdn-code-gallery-community-s-z
मुझे केवल पथ में Microsoft Dynamics js फ़ाइलों में रुचि थी
msdn-code-gallery-community-s-z/Sdk.Soap.js/
इसलिए मैंने निम्नलिखित कार्य किया
बनाओ
msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout
डिस्क पर मेरे रिपॉजिटरी फ़ोल्डर में फ़ाइल
git sparse-checkout init
उस निर्देशिका में विंडोज़ पर cmd का उपयोग करते हुए
की फ़ाइल सामग्री
msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout
है
Sdk.Soap.js/*
finally do a
git pull origin master