संयोग से प्रतिबद्ध .idea निर्देशिका फ़ाइलों को git में


306

मैंने गलती से .idea/डायरेक्टरी को गिट में डाल दिया है। यह हर जगह संघर्ष का कारण बन रहा है मुझे अपने रेपो की जांच करने की आवश्यकता है। मैं सोच रहा था कि मैं इन फ़ाइलों को रिमोट से कैसे निकालूं?

मुझे अभी भी इन फाइलों की स्थानीय स्तर पर जरूरत है क्योंकि इंटेलीज आईडीई को इनकी जरूरत है। मैं उन्हें रिमोट में नहीं चाहता। मैंने .idea/अपनी निर्देशिका को जोड़ .gitignoreदिया है और इस फाइल को दूरस्थ रूप में भेज दिया है। ऐसा लगता है कि मेरे अन्य मशीन पर मेरे चेकआउट के दौरान कोई प्रभाव नहीं है। मुझे अभी भी त्रुटि संदेश मिलता है:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml

10
आप अपने कमिट्स की समीक्षा करके भविष्य में इससे बचने में मदद कर सकते हैं। मैं चलाने के लिए पसंद करते हैं commitके साथ -vअपने संपादक में अंतर दिखाने के लिए जब आप प्रतिबद्ध लिख रहे हैं। यह इस तरह की गलती को रोकने में मदद करता है और साथ ही आपके द्वारा किए गए बदलाव पर अपने प्रतिबद्ध संदेश को केंद्रित करने में मदद करता है।
दाएंथ

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

1
: सभी लेकिन .idea में फ़ाइलों के दो स्रोत नियंत्रण में होना चाहिए devnet.jetbrains.com/docs/DOC-1186
CJA

मैंने IntelliJ .ignore प्लगइन को बहुत उपयोगी पाया है, जब आप उन सभी फ़ाइलों को प्रबंधित करना चाहते हैं, जो जीआईटी के लिए प्रतिबद्ध नहीं होनी चाहिए: plugins.jetbrains.com/plugin/7495?pr=idea
paranza

नमस्ते, अगर हमारे पास दूरस्थ रिपॉजिटरी में .idea है तो इसका क्या नुकसान है?
दूध सलाद

जवाबों:


676

अनदेखा फ़ाइलों की सूची में .idea निर्देशिका जोड़ें

सबसे पहले, इसे जोड़ें .gitignore, इसलिए यह गलती से आपके (या किसी और) द्वारा फिर से नहीं किया गया है:

.idea

इसे भंडार से निकालें

दूसरा, केवल रिपॉजिटरी से डायरेक्टरी को हटा दें, लेकिन इसे स्थानीय रूप से डिलीट न करें। इसे प्राप्त करने के लिए, जो यहां सूचीबद्ध है, उसे करें:

स्थानीय फ़ाइल सिस्टम से हटाए बिना किसी फ़ाइल रिपॉजिटरी से एक फ़ाइल निकालें

बदलाव दूसरों को भेजें

तीसरा, .gitignoreफ़ाइल और .ideaरिपॉजिटरी से हटाने के लिए प्रतिबद्ध है। इसके बाद इसे रिमोट (एस) पर धकेलें।

सारांश

पूरी प्रक्रिया इस तरह दिखाई देगी:

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(वैकल्पिक रूप से आप अंतिम पंक्ति को बदल सकते हैं git push some_remote, जहां some_remoteआप जिस रिमोट को पुश करना चाहते हैं उसका नाम है)


4
नोट: यदि आप fatal: pathspec '.idea' did not match any filesचलाते समय संदेश प्राप्त करते हैं git rm -r --cached .idea, तो अपने .idea फ़ोल्डर को हटा दें, github से खींचें और फिर पुनः प्रयास करें।
annedroiid

यदि आपको match किसी भी फाइल से मेल नहीं खाता ’की @annedroiid त्रुटि मिलती है, तो आप इसका पथ जोड़ सकते हैं। जैसे जब मैं database.yml फाइल डिलीट कर रहा था, मैंने बस 'git rm -r --cached config / database.yml' किया
Ruto Collins

.Idea निर्देशिका में कुछ फ़ाइलों को आपके रेपो में चेक किया जाना चाहिए। JetBrains के लिए github.com/github/gitignore/blob/master/Global/… देखें। आपका .ignignore कैसा दिखना चाहिए।
टोकनर_फ्स जूल

2
मैं इस फ़ोल्डर को मेरे जीवन के लिए हमारे रेपो से बाहर नहीं निकाल सकता ... शाखाओं को स्विच करना इसे फिर से ट्रैक करता है ... लोगों ने इसे कई शाखाओं पर चलाया है और किसी भी समय आप शाखाओं को स्विच करते हैं ... गिट को लगता है कि इसकी आवश्यकता है .. कुछ बिंदु पर ... अपने .idea फ़ोल्डर को हटाएं .. संक्षेप में ... अब शाखाओं को स्विच करना मूल रूप से हमारे लिए एक सेटिंग्स है। मैंने इसे मास्टर पर चलाने की कोशिश की ... फिर सभी शाखाओं में विलय कर दिया .. लेकिन स्टिल्स सेटिंग्स को मिटा रहा है।
nawlbergs

1
क्या हमारे पास इनटेलीजे पर सेट करने के लिए एक स्थायी समाधान है ताकि .ideaफाइलों को कम करने के लिए फ़ोल्डर में जोड़ें ?
सेराट

88

आप इसे रेपो से हटा सकते हैं और परिवर्तन कर सकते हैं।

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

उसके बाद, आप इसे रिमोट पर धकेल सकते हैं और उसके बाद हर चेकआउट / क्लोन ठीक होगा।


10
यह मेरे लिए काम किया, स्वीकार किए गए जवाब के विपरीत। शायद यह तेहिट ऐड-यू था जिससे फर्क पड़ा।
पाओलो मियोनी

आपको दूसरी पंक्ति की आवश्यकता नहीं है।
kjdion84

जैसा कि अन्य लोगों ने कहा, मैंने दूसरी पंक्ति नहीं चलाई। एक जादू की तरह काम किया! धन्यवाद
ब्लैककरा

0

आपको अपने प्रोजेक्ट में .gitignore फ़ाइल डालनी चाहिए और उसे जोड़ना /.ideaचाहिए। आपको प्रत्येक निर्देशिका / फ़ाइल को एक पंक्ति में जोड़ना चाहिए।

यदि आपके पास एक .gitignore फ़ाइल है, तो आपको बस फ़ाइल में एक नई पंक्ति जोड़नी चाहिए और नई पंक्ति में रखनी चाहिए /.idea

इसके बाद git rm -r --cached .ideaकमांड रन करें ।

यदि आपको कोई त्रुटि आई है तो आप git rm -r -f --cached .ideaकमांड चला सकते हैं । सभी चलाने के बाद git add .और फिर git commit -m "Removed .idea directory and added a .gitignore file"और अंत में git pushकमांड चलाकर बदलावों को आगे बढ़ाएं।


0

मास्टर शाखा पर यह प्रदर्शन करने के लिए बेहतर है

संपादित करें .gitignore फ़ाइल। इसमें नीचे की लाइन जोड़ें।

.idea

दूरस्थ रेपो से .idea फ़ोल्डर निकालें। कमांड के नीचे का उपयोग करना।

git rm -r --cached .idea

अधिक जानकारी के लिए। संदर्भ: वास्तव में उन्हें हटाने के बिना एक गिट रिपोजिटरी से फाइलें हटाना

स्टेज .gitignore फ़ाइल। नीचे कमांड का उपयोग करना

git add .gitignore

कमिट

git commit -m 'Removed .idea folder'

रिमोट से पुश करें

git push origin master

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