2009-08-27 20 views
5

में मौजूद होंगे, मैं एक प्री-प्रतिबद्ध हुक लिख रहा हूं, और प्रत्येक फाइल की पूरी सामग्री पर एक चेक करना चाहता हूं जो कि किए जाने वाले हैं (विशेष रूप से एक लिंट चेक फ़ाइलें)। मैं फ़ाइल को जांचना चाहता हूं क्योंकि यह काम करने जा रहा है, क्योंकि यह मेरे काम करने वाले पेड़ में मौजूद नहीं है (जो भिन्न हो सकता है)।पूरी फाइलें दिखाएं क्योंकि वे गिट इंडेक्स

प्री-प्रतिबद्ध हुक उदाहरण जो कि गिट के साथ आता है, आपको दिखाता है कि अंतर कैसे प्राप्त करें (ताकि आप रिक्त स्थान और इस तरह की जांच कर सकें), लेकिन मुझे पूरी फाइल को पूरा करने की आवश्यकता है।

उत्तर

9

इस प्रयास करें:

git --work-tree=/path/to/checkout-area checkout-index path/to/file-to-checkout 

--work-tree विकल्प, काम पेड़ के रूप में एक अलग क्षेत्र का उपयोग करने के लिए इतना है कि आप अपने सच्चे काम-वृक्ष में फ़ाइल को अधिलेखित नहीं है Git बताता है। यदि आवश्यक हो तो ओवरराइट करने के लिए कहने के लिए आप -f विकल्प भी जोड़ना चाहेंगे, लेकिन यदि आपकी स्क्रिप्ट ठीक से स्वयं के बाद साफ हो जाती है तो यह आवश्यक नहीं होना चाहिए। अधिक जानकारी के लिए man page for checkout-index देखें।

+0

हाँ, चेकआउट-इंडेक्स केवल मुझे संकेत था कि मुझे जो ढूंढना है उसे ढूंढने के लिए मुझे जरूरी था। धन्यवाद! –

6

एक एकल फ़ाइल के लिए एक अन्य समाधान (यह मानते हुए कि आप विरोध हुआ मर्ज के दौरान नहीं कर रहे हैं या rebase) है:

$ git show :0:path/to/file 

(जहां path/to/file भंडार में शीर्ष निर्देशिका के सापेक्ष है)।

या "git cat-file blob :0:path/to/file", जो (मुझे लगता है) किसी भी फ़िल्टर (कीवर्ड विस्तार, लाइन रूपांतरण का अंत, आदि) का आह्वान नहीं करेगा।

के बारे में अनुभाग देखें बढ़ाया SHA-1 git-rev-parse मैनपेज में वाक्य रचना


1.)Jefromi's answer का लाभ यह है कि git checkout-index का उपयोग कर आप एक से अधिक फ़ाइल चेकआउट कर सकते हैं; आप पूरी निर्देशिका या यहां तक ​​कि पूरी परियोजना की जांच कर सकते हैं।

+0

यह बहुत बढ़िया है हालांकि मुझे इसका उपयोग करने का बहाना मिल रहा है। – Cascabel

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