मैं एक फ़ाइल के एक विशेष संस्करण Git में कैसे देख सकता हूँ?


87

मैं git में किसी एक फ़ाइल के विशेष संस्करण को कैसे देख सकता हूँ?

मुझे मेलिंग सूची में यह मेल मिला , जिसमें कहा गया था:

$ git checkout HEAD~43 Makefile
$ git reset Makefile

लेकिन मुझे समझ नहीं आ रहा है कि 'हेड ~ 43' का पता कैसे लगाया जाए, अगर मैं ए git log aFile, कैसे करूं, तो मुझे कैसे पता चलेगा कि मुझे 'एचएएडी ~ 43' का उपयोग करना चाहिए?

और मुझे git resetउस फ़ाइल के लिए चलाने की आवश्यकता क्यों है ? यह क्या करता है?


"git रीसेट <प्रतिबद्ध> <फ़ाइल>" ठीक वैसे ही होता है जैसे "git चेकआउट <प्रतिबद्ध> <फ़ाइल>"।
जकुब नारबस्की

2
यदि आपका प्रश्न HEAD ~ 43 सिंटैक्स (git-Rev-parse में प्रलेखित) के बारे में है, तो इस मुद्दे के बारे में पूछें, न कि असंबंधित के बारे में जिसका उत्तर आप जानते हैं। "HEAD ~ 45 का क्या मतलब है, और फ़ाइल का विशेष संस्करण कैसे
खोजा जाता है

के अनुसार lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/…… और lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6.6-it reset.html , "git reset <प्रतिबद्ध> <file>" ठीक वैसा ही नहीं होता जैसा "git checkout <प्रतिबद्ध> <file>": "git रीसेट <प्रतिबद्ध> <file>" reverts <file> सूचकांक में वर्किंग ट्री में <प्रतिबद्ध> बिना टच <फ़ाइल> से, लेकिन "git चेकआउट <प्रतिबद्ध> <फ़ाइल>" इंडेक्स से <file> के लिए <file> को अपडेट करता है और फिर वर्किंग ट्री में <file> को अपडेट करता है।
योडा

2
यदि नीचे दिए गए किसी भी उत्तर ने आपके प्रश्न का उत्तर दिया , तो स्टैक ओवरफ्लो जिस तरह से काम करता है, आप उसके आगे दिए गए चेकमार्क पर क्लिक करके उत्तर को "स्वीकार" करेंगे; यहाँ विवरण । लेकिन केवल अगर आपके प्रश्न का उत्तर दिया गया है; यदि नहीं, तो स्पष्ट और अभी तक स्पष्ट नहीं होने वाले उत्तर पर प्रश्न और / या टिप्पणियों में अधिक विवरण जोड़ने पर विचार करें।
टीजे क्राउडर

जवाबों:


104

आप जानते हैं कि फ़ाइल का क्या संबंध है (यानी: विशिष्ट संशोधन)? फिर करो:

git checkout <commit> <file>

अन्य आदेश:

git checkout HEAD~N <file>

के लिए है जब आप एक सीमा से फ़ाइल का एक संस्करण प्राप्त करना चाहते हैं (जो मैं उदासीनता के लिए करता हूं)।


19

HEAD~43सिर्फ पेड़ है, इसलिए आप हैश या टैग का उपयोग कर सकते हैं। आपको फ़ाइल नाम से ट्रीश को अलग करना होगा --, अन्यथा इसे फ़ाइल नाम के रूप में माना जाता है। उदाहरण के लिए।

git checkout v0.45 -- filename
git checkout HEAD^ -- filename
git checkout 16bb1a4eeaa9 -- filename

2

HEAD~43फ़ाइल के कमिट (संस्करण) को संदर्भित करता है। इसके बजाय, आप git logफ़ाइल पर करने से प्राप्त प्रतिबद्ध हैश का उपयोग कर सकते हैं । यदि आप केवल फ़ाइल चाहते हैं, तो आपको उस git resetपर चलने की आवश्यकता नहीं है; यह केवल तभी आवश्यक है जब आप फ़ाइल को वर्तमान HEAD में पोर्ट करना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.