.gitignore फ़ाइल को स्वयं अनदेखा करें




version-control dvcs (19)

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

git update-index --assume-unchanged .gitignore

Source

https://code.i-harness.com

मैंने अभी अपनी नई परियोजना की जड़ पर एक git init किया है।

तब मैंने एक .gitignore फ़ाइल बनाई।

अब, जब मैं git status टाइप करता हूं, तो .gitignore फ़ाइल अनचाहे फ़ाइलों की सूची में दिखाई देती है। ऐसा क्यों है?


अपने गिट रेपो की मूल निर्देशिका पर नेविगेट करें और निम्न आदेश निष्पादित करें:

echo '\\.*' >> .gitignore

सभी डॉट फ़ाइलों को अनदेखा कर दिया जाएगा, जिसमें उस अजीब .DS_Store शामिल हैं यदि आप मैक पर हैं।


आप वास्तव में अपनी ".gitignore" फ़ाइल में ".gitignore" पंक्ति डाल सकते हैं। यह गिट द्वारा ".gitignore" फ़ाइल को अनदेखा कर देगा। मुझे वास्तव में नहीं लगता कि यह एक अच्छा विचार है। मुझे लगता है कि अनदेखा फ़ाइल संस्करण नियंत्रित और ट्रैक किया जाना चाहिए। मैं इसे पूर्णता के लिए वहां डाल रहा हूं।


आपके पास एक वैश्विक उपयोगकर्ता गिट भी हो सकता है .gitignore फ़ाइल जो आपके सभी रिपो में स्वचालित रूप से लागू हो जाएगी। यह आईडीई और एडिटर फाइलों के लिए उपयोगी है (उदाहरण के लिए swp और *~ वीम के लिए फाइलें)। अपने ओएस को सुइट करने के लिए निर्देशिका स्थान बदलें

  1. अपनी ~/.gitconfig फ़ाइल में जोड़ें

    [core]
    excludesfile = /home/username/.gitignore
    
  2. अनदेखा करने के लिए फ़ाइल पैटर्न के साथ ~/.gitignore फ़ाइल बनाएं

  3. अपनी डॉट फ़ाइलों को किसी अन्य रेपो में सहेजें ताकि आपके पास बैकअप (वैकल्पिक) हो।

जब भी आप प्रतिलिपि बनाते हैं, इनिट या क्लोन करते हैं तो आपकी ग्लोबल गिटिनोर फ़ाइल भी उपयोग की जाएगी।


ऐसा लगता है कि Git को भंडार से सभी फाइलों को अनदेखा करने के लिए आपकी वर्तमान निर्देशिका के लिए ही काम करना है।

इस फ़ाइल को अद्यतन करें

.git/info/exclude 

अपने जंगली कार्ड या फ़ाइल नाम के साथ

*pyc
*swp
*~

निम्नलिखित "समस्या" के लिए देखें कभी-कभी आप निर्देशिका जोड़ना चाहते हैं लेकिन उन निर्देशिकाओं में कोई फ़ाइल नहीं। सरल समाधान निम्न सामग्री के साथ एक .gitignore बनाने के लिए है:

*

यह सीम ठीक काम करने तक काम करती है जब तक आपको एहसास नहीं होता कि निर्देशिका को जोड़ा नहीं गया था (जैसा कि आपके भंडार के लिए अपेक्षित था। इसका कारण यह है कि .gitignore को भी अनदेखा कर दिया जाएगा, और इस प्रकार निर्देशिका खाली हो जाएगी। इस प्रकार, आपको ऐसा कुछ करना चाहिए :

*
!.gitignore

बस किसी और को एक ही दर्द है जो हमारे पास था। हम एक फाइल को बाहर करना चाहते थे जो पहले से ही किया गया था।

यह पोस्ट रास्ता अधिक उपयोगी था: .git / info / के साथ काम करना / बहुत देर हो चुकी है

विशेष रूप से आपको फ़ाइल को अनदेखा करने की आवश्यकता होती है, वास्तव में कमांड गिट हटाने का उपयोग करें जीआईटी आरएम देखें ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )

आप इसे जाकर परीक्षण करते हैं

git rm --dry-run *.log
(यदि आप कहते हैं कि सभी लॉग फाइलों को बाहर करना चाहते हैं)

यदि आप इसे चलाते हैं तो यह आउटपुट को बाहर कर दिया जाएगा।

फिर

आप इसे चलाकर चलाते हैं

git rm *.log
(या जो भी फ़ाइल नाम / अभिव्यक्ति आप चाहते हैं)

फिर अपनी .gitignore फ़ाइल में *.log लाइन जोड़ें।


बेशक .gitignore फ़ाइल स्थिति पर दिखाई दे रही है, क्योंकि यह अनचाहे है, और गिट इसे खाने के लिए एक स्वादिष्ट नई फ़ाइल के रूप में देखता है!

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

तो, जवाब सरल है: बस लाइन जोड़ें:

.gitignore # Ignore the hand that feeds!

आपकी .gitignore फ़ाइल में!

और, अगस्त की प्रतिक्रिया के विपरीत, मुझे यह कहना चाहिए कि यह नहीं है कि .gitignore फ़ाइल आपके भंडार में होनी चाहिए। ऐसा होता है कि यह हो सकता है, जो अक्सर सुविधाजनक होता है। और यह शायद सच है कि यही कारण है। गिटिनोरोर को .git / info / extrae के विकल्प के रूप में बनाया गया था, जिसमें भंडार द्वारा ट्रैक करने का विकल्प नहीं है। किसी भी दर पर, आप अपनी .gitignore फ़ाइल का उपयोग कैसे करते हैं, वह पूरी तरह से आपके ऊपर है।

संदर्भ के लिए, kernel.org पर gitignore (5) manpage देखें।


मुझे लगता है कि ऐसी स्थितियां हैं जहां .gitignore को अनदेखा करना बहुत उपयोगी है। उदाहरण के लिए, जब आपके पास एक ही कोडबेस पर काम करने वाली कई टीम या बड़ी टीम होती है। उस स्थिति में, आपको कुछ सम्मेलनों की आवश्यकता है, उनमें से एक सम्मेलन गिट रेपो में अनदेखा किए जाने के संबंध में है। यह आमतौर पर आईडीई या ओएस द्वारा बनाए गए फ़ाइलों और निर्देशिकाओं को अनदेखा करने के बारे में है, कुछ जेनरेट किए गए लॉग इत्यादि।

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

इसके लिए एक प्रतिद्वंद्वी होने के लिए, हम निम्नलिखित के रूप में कर सकते हैं:

  1. प्रारंभिक .gitignore टीम (ओं) में सम्मेलन को प्रतिबिंबित करना चाहिए,
  2. इसे धक्का देने के बाद, .gitignore को .gitignore प्रविष्टि जोड़कर सुरक्षित किया जाना चाहिए और फिर से बदलना चाहिए। इस तरह से .gitignore फ़ाइल " मुहरबंद " है।

" मुहरबंद " .gitignore फ़ाइल को स्थानीय स्तर पर बदल दिया जा सकता है, बिना किसी टीम के अन्य सदस्यों के बदले प्रचारक। हालांकि, अगर पूरी तरह से टीम को पूरी तरह से सहमति नहीं दी जाती है, तो इसे "अनदेखा" करना संभव है, इसे बदल दें और इसे फिर से "सील" करें। यह गलती से नहीं किया जा सकता है, केवल जानबूझकर।

अफसोस की बात है, आप मूर्खता से 100% संरक्षित नहीं हो सकते हैं, लेकिन इस तरह आपने बेवकूफ चीजों को रोकने के लिए जो कुछ भी कर सकते हैं वह किया है।

यदि आपके पास बहुत अच्छे पेशेवरों के साथ अपेक्षाकृत छोटी टीम है, तो इससे महत्वपूर्ण नहीं होगा, लेकिन यहां तक ​​कि उन लोगों को भी चिंता करने के लिए एक चीज़ कम करने की सराहना होगी।

.git/info/exclude का उपयोग करना ठंडा है जब आप बुनियादी सुविधाओं के बारे में कुछ भी नहीं कर सकते हैं, बस अपनी खुद की एक ** को गलती न करने के लिए कवर करें।

सही और सही क्या है, इसकी एक स्थायी बिंदु से मैं .gitignore फ़ाइल के अंदर .gitignore प्रविष्टि रखने के लिए मतदान कर रहा हूं, जिससे सभी को स्थानीय रूप से जो कुछ भी चाहिए, वह करने की आजादी देता है, लेकिन दूसरों पर हमला नहीं करता है।


मेरे मामले में, मैं एक मौजूदा फाइल को बाहर करना चाहता हूं। केवल संशोधित .gitignore काम नहीं करते हैं। मैंने इन चरणों का पालन किया:

git rm --cached dirToFile/file.php
vim .gitignore
git commit -a

इस तरह, मैंने फ़ाइल को कैश से साफ़ किया जिसे मैं बाहर करना चाहता था और इसके बाद मैंने इसे .gitignore में जोड़ा


मैंने पाया कि pesky को अनदेखा करने के लिए सबसे अच्छी जगह .DS_Store फ़ाइलें .git/info/exclude फ़ाइल को .git/info/exclude हैं।

IntelliJ स्वचालित रूप से ऐसा करने लगता है जब आप इसमें एक गिट भंडार स्थापित करते हैं।


यदि आप अपने गिट पेड़ के बाहर अनदेखी फ़ाइलों की सूची को स्टोर करना चाहते हैं, तो आप .git / info / फ़ाइल को बहिष्कृत कर सकते हैं। यह केवल रेपो के आपके चेकआउट पर लागू होता है।


यदि आप पहले ही .gitignore में चेक इन कर चुके हैं और आप इसमें संशोधन को अनदेखा करना चाहते हैं, तो यह उत्तर देखें :

इस आदेश का उपयोग करने का प्रयास करें:

git update-index --assume-unchanged FILENAME_TO_IGNORE

इसे उलट करने के लिए (यदि आप कभी भी इसमें बदलाव करना चाहते हैं), तो इसका उपयोग करें:

git update-index --no-assume-unchanged

अद्यतन :

वर्तमान निर्देशिका के तहत 'अपरिवर्तित मानें' फ़ाइलों को सूचीबद्ध करने का तरीका बताया गया है:

git ls-files -v | grep -E "^[a-z]"

चूंकि -v विकल्प 'अपरिवर्तित' फ़ाइलों के लिए लोअरकेस अक्षरों का उपयोग करेगा।


यह काफी संभव है कि एक अंतिम उपयोगकर्ता गिट को ".gitignore" फ़ाइल को अनदेखा करना चाहता है क्योंकि ग्रहण द्वारा बनाए गए आईडीई विशिष्ट फ़ोल्डर्स शायद नेटबीन या किसी अन्य आईडीई के समान नहीं हैं। तो स्रोत कोड आईडीई विरोधी को रखने के लिए यह एक कस्टम गिट अनदेखा करने के लिए जीवन को आसान बनाता है जिसे पूरी टीम के साथ साझा नहीं किया जाता है क्योंकि व्यक्तिगत डेवलपर्स अलग-अलग आईडीई का उपयोग कर सकते हैं।


विचार उन फ़ाइलों को रखना है जो आपके प्रोजेक्ट के लिए विशिष्ट हैं .gitignore फ़ाइल में और (जैसा कि पहले से ही उल्लेख किया गया है) इसे भंडार में जोड़ें। उदाहरण के लिए .pyc और .o फ़ाइलें, लॉग इन करता है कि testuite बनाता है, कुछ फिक्स्चर इत्यादि।

उन फ़ाइलों के लिए जो आपके स्वयं के सेटअप बनाता है लेकिन जो प्रत्येक उपयोगकर्ता के लिए जरूरी नहीं होगा (जैसे .swp फ़ाइलों यदि आप विम, छुपे हुए पारिस्थितिकी निर्देशिका और इसी तरह का उपयोग करते हैं), तो आपको .git .git/info/exclude extrae (जैसा कि पहले से ही उल्लेख किया गया है) का उपयोग करना चाहिए।


सबसे पहले, जैसा कि कई अन्य पहले से ही कहते हैं, आपके .gitignore को गिट द्वारा ट्रैक किया जाना चाहिए (और इसलिए इसे अनदेखा नहीं किया जाना चाहिए)। मुझे बताएं क्यों।

(टीएल; डीआर: .gitignore फ़ाइल को प्रतिबद्ध करें, और अपने आईडीई या ऑपरेटिंग सिस्टम द्वारा बनाई गई फ़ाइलों को अनदेखा करने के लिए वैश्विक .gitignore का उपयोग करें)

गिट है, जैसा कि आप शायद पहले ही जानते हैं, एक वितरित संस्करण नियंत्रण प्रणाली । इसका मतलब है कि यह आपको विभिन्न संस्करणों के बीच आगे और पीछे स्विच करने की अनुमति देता है (भले ही विकास अलग-अलग शाखाओं में अलग हो गया हो) और यह कई डेवलपर्स को एक ही प्रोजेक्ट पर काम करने की अनुमति देता है।

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

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

  • आपके ऑपरेटिंग सिस्टम या आईडीई द्वारा बनाई गई फ़ाइलों और फ़ोल्डर्स को वैश्विक .gitignore में रखा जाना चाहिए। लाभ यह है कि यह .gitignore आपके कंप्यूटर पर सभी रिपॉजिटरीज़ पर लागू होता है, इसलिए आपको प्रत्येक संग्रह के लिए इसे दोहराना नहीं है। और यह अन्य डेवलपर्स के साथ साझा नहीं किया जाता है, क्योंकि वे एक अलग ऑपरेटिंग सिस्टम और / या आईडीई का उपयोग कर रहे हैं।
  • फ़ाइलें जो प्रोजेक्ट के .gitignore में नहीं हैं, न ही वैश्विक your_project_directory/.git/info/exclude में, your_project_directory/.git/info/exclude का उपयोग करके अनदेखा किया जा सकता है your_project_directory/.git/info/exclude में शामिल नहीं है । यह फ़ाइल अन्य डेवलपर्स के साथ साझा नहीं की जाएगी, और उस एकल भंडार के लिए विशिष्ट है

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

अगर इसे .the_list_of_ignored_files कहा जाता है .the_list_of_ignored_files यह थोड़ा और स्पष्ट हो सकता है।

एक समानता उन वस्तुओं की एक सूची है जो आप नहीं करना चाहते हैं। जब तक आप उन्हें कहीं भी सूचीबद्ध नहीं करते हैं, तो कुछ प्रकार की 'टू-डू' सूची होती है जिसे आप उनके बारे में नहीं जानते।


.gitignore फ़ाइल आपके भंडार में होनी चाहिए, इसलिए इसे वास्तव में जोड़ा और प्रतिबद्ध किया जाना चाहिए, क्योंकि git status बताती है। इसे रिपोजिटरी पेड़ का हिस्सा होना चाहिए, ताकि इसमें परिवर्तन विलय किया जा सके और इसी तरह।

तो, इसे अपने भंडार में जोड़ें, इसे गिटिग्न नहीं किया जाना चाहिए।

यदि आप वास्तव में चाहते हैं कि आप .gitignore फ़ाइल में .gitignore जोड़ सकते हैं यदि आप इसे प्रतिबद्ध नहीं करना चाहते हैं। हालांकि, उस स्थिति में .git/info/exclude को जोड़ने के लिए शायद बेहतर है। .git/info/exclude , एक विशेष चेकआउट-स्थानीय फ़ाइल जो कि .gitignore की तरह काम करती है लेकिन यह "गिट स्थिति" में दिखाई नहीं देती है क्योंकि यह .git फ़ोल्डर में है।

https://help.github.com/articles/ignoring-files भी https://help.github.com/articles/ignoring-files


.gitignore फ़ाइल जोड़ने और इसे प्रतिबद्ध करने के बाद, यह अब "अनचाहे फ़ाइलों" सूची में दिखाई नहीं देगा।

git add .gitignore
git commit -m "add .gitignore file"
git status






gitignore