जवाबों:
git checkout 'master@{7 days ago}' -- path/to/file.txt
यह HEAD में परिवर्तन नहीं करेगा, यह सिर्फ स्थानीय फ़ाइल को अधिलेखित करेगा path/to/file.txt
वहाँ संभव संशोधन विनिर्देशों के लिए आदमी git-Rev-parse देखें (बेशक एक साधारण हैश (जैसे dd9bacb) अच्छी तरह से करेंगे)
परिवर्तन (समीक्षा के बाद ...) करना न भूलें
revision-specificationजो कि ओपी ने पूछा था कि क्या है
shacommit~1(पूर्व:) का उपयोग करें git checkout 0f4bbdcd~1 -- path/to/file.txtताकि आप तुरंत कमिट कर सकें।
git checkout [Revision_Key] -- path/to/file।git checkoutएकल फ़ाइलों को संभाल सकते हैं (देखें उत्तर द्वारा देखें), कॉपी और पेस्ट करने की आवश्यकता नहीं है।
HEADके लिए ORIG_HEAD, या किसी भी ^/ ~/ @-स्टाइल संकेतन के साथ संयुक्त अंक की ओर इशारा करती है।
मुझे एक हालिया फ़ाइल को git में प्रतिबद्ध करने की आवश्यकता है। तो बस फिर से दोहराने और एक और परिप्रेक्ष्य देने के लिए, आपको निम्न दो चरण चलाकर ऐसा करने की आवश्यकता है:
git log -3
यह तीन सबसे हाल के हिट दिखाता है। टिप्पणियों और लेखक का नाम पढ़ें ताकि आप जो सटीक संस्करण चाहते हैं उसे संकीर्ण कर दें। उस लंबे संस्करण को लिखें (यानी b6b94f2c19c456336d60b9409fb1e373036d3d71) जिस इच्छित संस्करण के लिए आप चाहते हैं।
git चेकआउट b6b94f2c19c456336d60b9409fb1e373036d3d71 - myfile.java
कमिट आईडी और वह फ़ाइल नाम जिसे आप पुनर्स्थापित करना चाहते हैं पास करें। सुनिश्चित करें कि आपके पास डबल हाइफ़न से पहले और बाद में एक जगह है।
इसे करने के कई अन्य तरीके हैं। लेकिन यह एक सरल है जिसे मैं याद रख सकता हूं। उम्मीद है की वो मदद करदे।
नोट: यदि आप अपने प्रोजेक्ट पथ / फ़ोल्डर के अंदर हैं, तो चेकआउट कमांड में पूर्ण फ़ाइल का पथ टाइप करना आवश्यक नहीं है।
सभी उत्तर का उल्लेख है git checkout <tree-ish> -- <pathspec>। Git v2.23.0 के रूप में एक नई git पुनर्स्थापना विधि है, जो उस भाग को मानने वाली है जो git checkoutइसके लिए जिम्मेदार था। जीथब ब्लॉग पर परिवर्तनों के मुख्य अंश देखें ।
इस कमांड का डिफ़ॉल्ट व्यवहार एक कार्यशील पेड़ की स्थिति को sourceपैरामीटर से आने वाली सामग्री को पुनर्स्थापित करना है (जो आपके मामले में एक प्रतिबद्ध हैश होगा)।
यह मानते हुए कि कमिट हैश है abcdefकि कमांड इस तरह दिखाई देगी:
git restore --source=abcdef file_name
जो (डिफ़ॉल्ट रूप से) इसे कार्यशील पेड़ में डालता है। यदि आप बदलाव को सीधे सूचकांक में रखना चाहते हैं, तो इसे सीधे प्रतिबद्ध किया जा सकता है:
git restore --source=abcdef --worktree --staged file_name
या छोटे विकल्प नामों के साथ:
git restore -s=abcdef -W -S file_name