.gitignore काम नहीं कर रहा है




(16)

मेरी .gitignore फ़ाइल को गिट द्वारा अनदेखा किया जा रहा है - क्या .gitignore फ़ाइल दूषित हो सकती है? कौन सा फ़ाइल प्रारूप, लोकेल या संस्कृति गिट की अपेक्षा करता है?

मेरा .gitignore :

#this is a comment
debug.log
nbproject/

git status से आउटपुट:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       debug.log
#       nbproject/
nothing added to commit but untracked files present (use "git add" to track)

मैं debug.log और nbproject/ फ़ाइलों की सूची में प्रकट नहीं होना nbproject/

मुझे इसे ठीक करने के लिए कहां से शुरू करना चाहिए?


अन्य समाधानों के साथ, पहले प्रतिबद्ध करें और जागरूक रहें कि आप किसी भी गैर-प्रतिबद्ध परिवर्तन खो देंगे।

मेरे पास इसके साथ बेहतर परिणाम थे:

git rm -r --cached .
git reset HEAD --hard
git status

ध्यान दें कि स्थिति में अब कोई संशोधित फाइल नहीं होनी चाहिए।


अपनी परियोजना में एक और प्रतिबद्धता जोड़ने के बिना, एक लाइन पर्याप्त बनाने के लिए पर्याप्त होगी। .gitignore काम जैसा कि यह माना जाता है:

git rm -r --cached debug.log nbproject

यह इसे भंडार से हटा देगा लेकिन फिर भी उन्हें भौतिक रूप से, सादे अंग्रेजी में रखेगा, इससे संबंधित परिवर्तनों के किसी भी इतिहास को हटा दिया जाएगा, और भविष्य में किसी भी प्रतिबद्धता में उनके परिवर्तन को ट्रैक नहीं किया जाएगा। एक बेहतर स्पष्टीकरण आपको here मिल सकता here


इस मुद्दे का एक अन्य कारण कथन से पहले खाली रिक्त स्थान या टैब है:

उदाहरण:

#Be aware of following:
 notWorkingIgnore.*
workingIgnore.*

और जैसा कि टिप्पणी द्वारा इंगित किया गया है, पिछली जगह एक समस्या हो सकती है

#Be aware of following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace

एक बात यह भी देखने के लिए है, क्या आप अपनी .gitignore फ़ाइल को सही लाइन समाप्ति के साथ सहेज रहे हैं?

विंडोज़: यदि आप इसे विंडोज़ में इस्तेमाल कर रहे हैं, तो क्या आप इसे विंडोज लाइन एंडिंग के साथ सहेज रहे हैं? सभी प्रोग्राम डिफ़ॉल्ट रूप से ऐसा नहीं करेंगे, नोटपैड ++ और कई php संपादक लिनक्स लाइन समाप्ति के लिए डिफ़ॉल्ट हैं ताकि फ़ाइलें सर्वर संगत हों। इसे जांचने का एक आसान तरीका, विंडोज नोटपैड में फ़ाइल खोलें। अगर सब कुछ एक पंक्ति पर दिखाई देता है, तो फ़ाइल लिनक्स लाइन के अंतराल से सहेजी गई थी।

LINUX: यदि आपको लिनक्स पर्यावरण में काम करने वाली फ़ाइल में समस्या हो रही है। फ़ाइल को एमेक्स या नैनो जैसे संपादक में खोलें। यदि आप किसी भी गैर-प्रिंट करने योग्य वर्ण देखते हैं, तो फ़ाइल को विंडोज़ लाइन एंडिंग के साथ सहेजा गया था।


ठीक है, तो मेरे मामले में स्वीकार्य समाधान काम नहीं किया, और यहां क्या काम किया गया है:

https://ericnelson.wordpress.com/2014/06/21/is-visual-studio-2013-ignoring-your-gitignore-file/

संक्षेप में:

  • विजुअल स्टूडियो बंद करें।
  • अपने .git फ़ोल्डर पर नेविगेट करें
  • Ms-persist.xml हटाएं
  • विजुअल स्टूडियो को पुनरारंभ करें

उम्मीद है कि यह किसी को कभी मदद करता है


फिक्स्ड। ठीक है, मैंने विंडोज़ पर नोटपैड में .gitignore फ़ाइल बनाई और यह काम नहीं कर रहा था। जब मैंने लिनक्स में .gitignore फ़ाइल को देखा तो यह संगठित gibberish की तरह लग रहा था - शायद नोटपैड ने ascii के बजाय यूनिकोड लिखा था या जो भी 8-बिट है।

तो मैं अपने लिनक्स बॉक्स पर फ़ाइल को फिर से लिखता हूं, और जब मैंने इसे विंडोज़ में वापस खींच लिया तो यह ठीक काम करता है! हुर्रे!


मुझे भी बिल्कुल यही समस्या है। मेरा मानना ​​है कि यह मुद्दा एक सीआर बनाम सीआर + एलएफ विसंगति थी। मैंने cmd (विंडोज़ 7 पर) और निम्न आदेश का उपयोग कर मेरे .gitignore में चीजें छीन लीं:

खराब:

echo "file_to_be_ignored.py" >> .gitignore
गूंज "* ~" >> .gitignore

आदि।

मुद्दा यह था कि यह आदेश नई लाइनों को पहचानने के लिए गिट के लिए सही अंत-ऑफ-लाइन मार्कर नहीं रखता है (या तो सीआर या सीआर + एलएफ जब गिट दूसरे की अपेक्षा करता है)। मैंने मैन्युअल रूप से प्रत्येक नई लाइन को विम में बदलकर समस्या हल की है (बचाव के लिए vim!) और यह पूरी तरह से काम किया।

नोटपैड ++ या vim (आदर्श) में अपने .gitignore को संपादित करने का प्रयास करें, भले ही फ़ाइल दिखती है कि यह सही रूप से स्वरूपित है, तो न्यूलाइन को बदलने का प्रयास करें। अजीब लगता है, मुझे पता है, लेकिन मेरे लिए काम किया। : डी


मुझे यह समस्या थी, एक .gitignore के साथ इस लाइन युक्त:

lib/ext/

मुझे अभी एहसास हुआ कि वास्तव में, यह निर्देशिका कहीं और फ़ोल्डर के लिए एक प्रतीकात्मक लिंक है:

ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb  6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib

लाइन lib/ext/ लाइन पर, गिट वास्तव में एक फ़ोल्डर की तलाश करता है , लेकिन एक प्रतीकात्मक लिंक एक फ़ाइल है , इसलिए मेरा lib फ़ोल्डर अनदेखा नहीं किया जाता है।

मैंने lib/ext/ . extignore पर lib/ext/ द्वारा प्रतिस्थापित करके इसे ठीक किया।


मेरे मामले में, ऐसा इसलिए है क्योंकि फाइलें रेपो में पहले से मौजूद हैं और मैं इसे अनदेखा करने की कोशिश कर रहा हूं।

इस मुद्दे को ठीक करने के लिए मैंने ये बातें की हैं:

  • फ़ाइलों को एक अस्थायी फ़ोल्डर में कॉपी करें
  • उन्हें अपने प्रोजेक्ट फ़ोल्डर से हटा दें।
  • परिवर्तनों को कम करें जो उन फ़ाइलों को रेपो से हटा दें
  • उन फ़ाइलों को मेरे प्रोजेक्ट फ़ोल्डर में दोबारा जोड़ा गया

तब तक, उन फ़ाइलों पर किए गए किसी भी बदलाव को नजरअंदाज कर दिया गया था।

मुझे लगता है कि आप उन फ़ाइलों को अनदेखा नहीं कर सकते जो पहले से ही रेपो पर मौजूद हैं।


मेरे लिए उपर्युक्त उत्तरों में से कोई भी काम नहीं करता है। मुझे exclude.txt टेक्स्ट को exclude.txt फ़ाइल में कॉपी करना था

<Your-project-folder>\.git\info

एक बार हो जाने पर, अपने परिवर्तनों को रीफ्रेश करें और सभी अनचाहे फ़ाइलें चली गई हैं। हमेशा के रूप में प्रतिबद्ध।


मैंने देखा कि .gitignore का एन्कोडिंग प्रभाव डाल रहा था - अगर फ़ाइल यूनिकोड थी, तो इसे अनदेखा किया गया था, अगर यह ASCII था, तो यह नहीं था।

प्रक्रिया:

  1. स्थिति सत्यापित करें: PS> git status
  2. Get-FileEncoding करने के लिए एक फ़ंक्शन बनाएं
  3. टेस्ट PS> Get-FileEncoding .gitignore एन्कोडिंग: PS> Get-FileEncoding .gitignore
  4. एएससीआईआईआई Get-FileEncoding : PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore) Get-FileEncoding PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. पुष्टि करें: PS> git status

यदि आप नोटपैड ++ उपयोगकर्ता हैं, तो निम्न कार्य करने का प्रयास करें:

नोटपैड ++ का उपयोग करके अपनी .gitignore फ़ाइल खोलें और करें:

संपादित करें> ईओएल रूपांतरण> विंडोज प्रारूप> सहेजें

गिट स्थिति का फिर से उपयोग करने का प्रयास करें और देखें कि यह आपके लिए काम करता है या नहीं।

मैंने यहां एक समान प्रश्न here उत्तर पोस्ट किया here ।


यहां तक ​​कि यदि आपने अब तक फ़ाइलों को ट्रैक नहीं किया है, तो भी गिट उन्हें उनके बारे में "जानने" में सक्षम होने के बाद भी लगता है .gitignore

नोट: सबसे पहले अपने वर्तमान परिवर्तन करें, या आप उन्हें खो देंगे।

फिर अपने गिट रेपो के शीर्ष फ़ोल्डर से निम्न आदेश चलाएं:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"

यहां सभी जवाब वास्तव में कामकाज हैं। git init चलाने से पहले आपको .gitignore फ़ाइल बनाने की आवश्यकता है, अन्यथा git कभी नहीं जान पाएगा कि आपको उन फ़ाइलों को अनदेखा करने की आवश्यकता है क्योंकि उन्हें पहले ही ट्रैक किया गया है।

echo .idea/ >> .gitignore
git init

यदि आप दैनिक आधार पर विकसित होते हैं, तो मैं आपको अपनी आदत वाली अनदेखी फ़ाइलों को अपनी ~/.gitignore_global फ़ाइल में जोड़ने की सलाह देता हूं। इस तरह, git पहले ही पता चलेगा कि आप कौन सी फाइलें (जिसका अर्थ है "आपका उपयोगकर्ता", क्योंकि यह आपकी होम निर्देशिका में एक फाइल है) आमतौर पर अनदेखा करते हैं।


.gitignore साथ एक और मुद्दा है, विशेष रूप से एक विंडोज उपयोगकर्ता के लिए, गिट इसे पसंद नहीं करते हैं जब आप नाम unity.gitignore (जैसे unity.gitignore )। आप इसे हमेशा नामित करना चाहेंगे। .gitignore , या windows पर .gitignore. क्योंकि खिड़कियां सोचती हैं कि आप फ़ाइल नाम के बिना इसका नाम बदलने की कोशिश कर रहे हैं।


निर्देशिका को भी देखें , जहां आपने रखा है .gitignore यह आपके प्रोजेक्ट की जड़ में होना चाहिए:

./myproject/.gitignore

अंदर नही

./myproject/.git/.gitignore




gitignore