2012-12-01 7 views
5

मैं एक गिट भंडार से एक अलग स्थान (कामकाजी डीआईआर के अलावा) में एक फ़ाइल को चेकआउट करना चाहता हूं और मेरे वर्तमान कामकाजी डीआईआर को छोड़ देना चाहता हूं। और मैं गिट चाहता हूं कि मेरी फाइल सही लाइन समाप्ति के साथ जांच करे।जब मैं एक फ़ाइल को गिट के साथ एक अलग स्थान पर देखता हूं तो मैं लाइन एंडिंग कैसे संरक्षित कर सकता हूं?

मैं विंडोज पर काम करता हूं लेकिन मुझे लिनक्स में भी यही समस्या है।

git config --local core.autocrlf true 

तो मैं एक फ़ाइल बनाने: मुझे यकीन है कि Git CRLF धर्मान्तरित पर वामो चेकआउट पर CRLF के लिए प्रतिबद्ध और वामो के लिए कर

पहले:

यहाँ मेरी परिदृश्य (Win7 64-बिट) है CRLF लाइन अंत के साथ crlf.txt कहा जाता है और यह प्रतिबद्ध:

git add crlf.txt 
git commit -m "File with crlf" 

मैं crlf.txt में कुछ बदलने और इसे प्रतिबद्ध:

git add crlf.txt 
git commit -m "Change in crlf.txt" 

अब मैं crlf.txt प्राप्त करना चाहते हैं की तरह उस पर था पहले प्रतिबद्ध:

git show HEAD~1:crlf.txt > "/home/user/crlf_like_in_head-1.txt" 

फ़ाइल "crlf_like_in_head-1.txt" कोई CRLF लेकिन वामो में शामिल है। मुझे लगता है कि गिट शो सही है क्योंकि यह फ़ाइल सामग्री को दिखाता है जैसे कि यह भंडार में है (core.autocrlf = सच सीआरएलएफ को एलएफ में परिवर्तित करता है)। मुझे पता है कि दस्तावेज़ीकरण से और मैंने core.autocrlf = false के साथ ऐसा करने की कोशिश की। Core.autocrlf = false "crlf_like_in_head-1.txt" के साथ CRLF होता है। मुझे पता है कि मैं आसानी से एलएफ को सीआरएलएफ में परिवर्तित कर सकता हूं लेकिन मुझे यह सुनिश्चित करना होगा कि परिणाम फ़ाइल समान है जैसे कि गिट के साथ चेक आउट किया गया था।

मैं जानता हूँ कि मैं भी Git चेकआउट के साथ एक एकल फाइल चेकआउट कर सकते हैं:

git checkout HEAD~1 crlf.txt 

लेकिन यह (भी crlf.txt एक गंदा स्थिति में था तो) काम कर निर्देशिका में crlf.txt की वर्तमान सामग्री अधिलेखित कर देता है और मैं इसे गिट चेकआउट के साथ एक अलग फ़ोल्डर में चेकआउट नहीं कर सकता।

उत्तर

1

आपको यह अधिकार मिला - git show सिर्फ आपको दिखाता है कि रेपो में क्या है - कोई चेकआउट जादू चल रहा है।

आप प्राप्त कर सकते हैं क्या आप अस्थायी रूप से अपने चेकआउट

git --work-tree=/home/user checkout HEAD~1 crlf.txt 

यह /home/user/crlf.txt करने के लिए फ़ाइल की जाँच के लिए अपने काम करने निर्देशिका के स्थान को बदलने के द्वारा चाहते हैं। नोट: यदि आप उपदिर में फ़ाइल को चेकआउट करते हैं, तो वह निर्देशिका लक्ष्य फ़ोल्डर में भी बनाई जाएगी। आप इसे रोक नहीं सकते हैं, न ही लक्ष्य फ़ाइल के फ़ाइल नाम निर्दिष्ट कर सकते हैं। यदि यह एक समस्या है तो आपको 2-लाइन शेल स्क्रिप्ट लिखनी चाहिए जो एक temp dir पर चेकआउट करता है और फिर चेक आउट फ़ाइल को ले जाता है।

+0

उत्तर के लिए धन्यवाद। लेकिन यह Win32 के तहत काम नहीं करता है। यह निम्न त्रुटि देता है: "त्रुटि: pathspec 'hallo.txt' गिट को ज्ञात किसी भी फ़ाइल से मेल नहीं खाती है।" मैंने कोर.वर्कट्री विकल्प के साथ भी कोशिश की। यह काम करता है अगर मैं एक पूर्ण शाखा या संशोधन (गिट - वर्क-पेड़ =/घर/उपयोगकर्ता चेकआउट HEAD ~ 1) – fernsehkind

+0

चेकआउट करता हूं, तो मुझे यह जांच करते समय भी यही समस्या थी। क्या आप ऐसे पथ की जांच करने की कोशिश कर रहे हैं जो आपके रेपो का अभिभावक है? – Chronial

+0

हां मैंने किया। लेकिन मैंने एक पूरी तरह से अन्य पथ की कोशिश की। लेकिन यह काम नहीं करता है। – fernsehkind

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