2015-02-06 4 views
27

मैं गिट चलाने वाले सर्वर के साथ साइट पर काम कर रहा हूं। मैं तैनाती के लिए गिट का उपयोग कर रहा हूं (गिटहब नहीं)। यह hook method का उपयोग करके मेरी भागीदारी से पहले स्थापित किया गया था, और मैंने this question को संदर्भित किया और नीचे दिए गए आदेशों में प्रवेश किया, लेकिन यह काम नहीं किया।गिट में सर्वर रिपोजिटरी से एक फ़ाइल को कैसे खींचें?

तो मूल रूप से, मैं सर्वर से एक फ़ाइल कैसे खींचूं? उदाहरण के लिए, अगर मैं अपनी स्थानीय फ़ाइल index.php को अपडेट करना चाहता था? git pull index.php?

+1

संभावित डुप्लिकेट [क्या गिट में केवल एक फ़ाइल खींचना संभव है?] (Http://stackoverflow.com/questions/16230838/is-it-possible-to-pull-just-one-file-in- गिट) –

+0

संभावित डुप्लिकेट [गिट रिपोजिटरी से केवल एक फ़ाइल को चेकआउट कैसे करें?] (http://stackoverflow.com/questions/2466735/how-to-checkout-only-one-file-from-git-repository) –

उत्तर

64

यह (तैनात भंडार में) करने के लिए संभव है:

git fetch 
// git fetch will download all the recent changes, but it will not put it in your current checked out code (working area). 

इसके बाद:

git checkout origin/master -- path/to/file 
//git checkout origin/master -- path/to/file will checkout the particular file from the the downloaded changes (origin/master). 
+1

धन्यवाद। तो आप ' 'से क्या मतलब है? फ़ाइल का नाम? और यदि मेरी फ़ाइल रूट निर्देशिका में है तो इसका मतलब है कि मुझे टाइप करना होगा: 'git checkout -m index.php index.php'? – vsvs

+0

स्पष्टीकरण के लिए धन्यवाद। – vsvs

+0

क्या यह '* मूल */मास्टर' होना चाहिए या यह किसी भी दूरस्थ से हो सकता है? क्या पूरा इतिहास मेरे रेपो में खींचा गया है या क्या फ़ाइल जादुई रूप से दिखाई देती है? –

8
git fetch --all 
git checkout origin/master -- <your_file_path> 
git add <your_file_path> 
git commit -m "<your_file_name> updated" 

यह मानते हुए है आप मूल/गुरु से फ़ाइल खींच रहे हैं।

-3
git clone <git_repository>.git <path_to_desired_file> 

तो, से MINAStatCollector.java खींचने के लिए: https://github.com/igniterealtime/Openfire/tree/master/src/java/org/apache/mina/management, तो आपको निम्न है:

git clone https://github.com/igniterealtime/Openfire.git Openfire/src/java/org/apache/mina/management/MINAStatCollector.java 
+0

बस ध्यान दें कि यह एक फ़ाइल को क्लोन नहीं करता है ... यह उस फ़ाइल के पथ में संपूर्ण भंडार क्लोन करता है जिसे आप क्लोन करना चाहते हैं। –

0

उपयोग करके देखें:

Git चेकआउट BRANCHNAME - fileName

पूर्व: Git चेकआउट मास्टर - index.php

0

यह परिदृश्य आता है जब आप - या आपके से अधिक बल - आपके स्थानीय रेपो में फ़ाइल को उलझा हुआ है और आप बस रेपो से इसके नवीनतम संस्करण की एक ताजा प्रति पुनर्स्थापित करना चाहते हैं। फ़ाइल को बस/bin/rm (git rm नहीं) के साथ हटाएं या इसे नामकरण/छुपाएं और फिर git pull जारी नहीं किया जाएगा: गिट फ़ाइल की अनुपस्थिति को नोटिस करता है और मानता है कि आप शायद इसे रेपो से हटा चुके हैं (git diff सभी पंक्तियां हटा दी जाएंगी लापता फाइल से)।

git pull स्थानीय रूप से लापता फ़ाइलों को पुनर्स्थापित नहीं हमेशा मुझे Git के बारे में निराश किया है, शायद के बाद से मैं दूसरे संस्करण नियंत्रण प्रणाली (जैसे svn update जो मेरा मानना ​​है कि फ़ाइलों है कि स्थानीय स्तर पर छिपा दिया गया बहाल कर देगी) से प्रभावित किया गया है।

git reset --hard HEAD ब्याज की फ़ाइल को पुनर्स्थापित करने का एक वैकल्पिक तरीका है क्योंकि यह आपके पास किसी भी असामान्य परिवर्तन को फेंक देता है। हालांकि, जैसा कि here उल्लेख किया गया है, यदि आपके पास कोई अन्य असामान्य परिवर्तन है, तो आपके पास गिट रीसेट एक संभावित खतरनाक कमांड है।

git fetch ... git checkout @chrismillah द्वारा ऊपर दी गई रणनीति प्रश्न में फ़ाइल को पुनर्स्थापित करने का एक अच्छा शल्य चिकित्सा तरीका है।

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