"टेक्स्ट" विशेषता का उपयोग करके सामान्यीकृत फ़ाइलों के बाद मैं मास्टर शाखा को चेकआउट करने और गाड़ी के रिटर्न को हटाने के लिए कैसे बाध्य करूं?


101

ठीक है, इसलिए मैंने फाइल .gitattributesको इस तरह लाइनों के साथ जोड़ा

*.css text
*.js text
etc...

मैंने तब http://git-scm.com/docs/gitattributes#_checking-out_and_check-in पर निर्देशों का पालन किया

$ rm .git/index     # Remove the index to force Git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"

लेकिन अब मेरी वर्किंग कॉपी में अभी भी गाड़ी की वापसी है! मेरे पास ऐसी फाइलें नहीं हैं जिन्हें मैं रखना चाहूंगा। मैं सामान्यीकृत फ़ाइलों के साथ मास्टर शाखा को फिर से चेकआउट कैसे कर सकता हूं?

मुझे पता है कि रिपॉजिटरी में फाइलें सामान्य हो जाती हैं क्योंकि जब मैं रेपो को क्लोन करता हूं, तो मेरे पास गाड़ी के रिटर्न के बिना सभी फाइलें होती हैं।

जवाबों:


264

आह आह! पिछली प्रतिबद्ध जांच करें, फिर मास्टर की जांच करें।

git checkout HEAD^
git checkout -f master

5
इस वर्कअराउंड के लिए धन्यवाद, लेकिन यह इस मुद्दे पर चकाचौंध है कि "चेकआउट -f" वास्तव में री-चेकआउट को बाध्य नहीं करता है। एक और चिंता यह होगी कि पहले सभी काम करने वाली कॉपी फाइलों को हटा दिया जाए (यानी सब कुछ लेकिन .It dir)।
पफल्कॉन

आह, हाँ, इसके लिए धन्यवाद! यह सुनकर, मैं अनुमान लगा रहा हूं कि हम केवल ब्याज की फाइलें निकाल सकते हैं और चेकआउट चला सकते हैं। मेरे लिए वास्तव में केवल एक फ़ाइल थी जिसे मैं ठीक करने की कोशिश कर रहा था। लेकिन निश्चित रूप से यह सभी फाइलें, सैकड़ों या हजारों हो सकती हैं।
जेसन

यह git पर विफल रहता है 1.8.3 (mac) के साथ: त्रुटि: pathspec 'HEAD ^' git के लिए ज्ञात किसी भी फ़ाइल (s) से मेल नहीं खाता।
dval

@dval, इस पोस्ट के संपादन को देखें और आपको ऐसा करने का एक वैकल्पिक तरीका दिखाई देगा। मैं एक मैक पर चल रहा हूं, भी, और यह मेरे लिए काम करता है। मैं आपको अपने git को 2+ में अपग्रेड करने के लिए प्रोत्साहित करता हूं और आप Homebrew का उपयोग इसे सुरक्षित रख-रखाव के तरीके से करने के लिए कर सकते हैं।
जेसन

2
यह वास्तव में काम नहीं करता है। जीआईटी केवल उन फाइलों को अपडेट करेगा जो दो कमिट (कुछ अपवादों के साथ) के बीच बदल गई हैं। यदि एक रिपॉजिटरी एकदम नई है, जैसे। केवल दो काम करता है और सबसे पहले खाली होता है, फिर यह समाधान काम करेगा। अन्यथा, आपको mechsin के उत्तर द्वारा बताई गई सभी फ़ाइलों को जबरन हटाने की आवश्यकता है।
15:18 बजे jstine

16

जैसा कि अन्य लोगों ने बताया है कि रेपो में सभी फाइलों को डिलीट किया जा सकता है और फिर उन्हें चेक किया जा सकता है। मैं इस पद्धति को पसंद करता हूं और यह नीचे दिए गए कोड के साथ किया जा सकता है

git ls-files -z | xargs -0 rm
git checkout -- .

या एक पंक्ति

git ls-files -z | xargs -0 rm ; git checkout -- .

मैं इसे हर समय उपयोग करता हूं और अभी तक कोई भी नीचे की तरफ नहीं मिला है!

कुछ और स्पष्टीकरण के लिए, -zप्रत्येक प्रविष्टि आउटपुट के अंत में एक अशक्त चरित्र को जोड़ता है ls-files, और उन अशक्त पात्रों द्वारा प्राप्त आउटपुट को परिसीमन करने के लिए -0कहता xargsहै।

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