काम न करने की वैश्विक अनदेखी करें


84

मैंने फ़ाइल बनाई है .gitignore_globalऔर इसे अपने git इंस्टॉल डायरेक्टरी में रखा है। जब मैं कमांड चलाता हूं:

git config --global core.excludesfile ~/.gitignore

अनदेखी फ़ाइल में नियम मेरे कमिट पर लागू नहीं होते हैं।

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

यहाँ क्या गलत है?


1
@Jarrod `~ / .gitignore_global` ओपी का मतलब क्या था और पोस्ट में सिर्फ एक टाइपो था, हालांकि उसने मेरा जवाब स्वीकार किया, इसलिए आपका संपादन अच्छा नहीं है
चार्ल्सबी

क्या इससे आपके सवाल का जवाब मिलता है? ग्लोबल गिट की अनदेखी
कोडवर्ड

जवाबों:


169

शायद आपको करने की आवश्यकता है:

git config --global core.excludesfile ~/.gitignore_global 

और कुछ कॉफ़ी पी।


क्षमा करें कि मेरा क्या मतलब है। जो मैंने कॉपी किया था वह सिर्फ यह देखने के लिए गड़बड़ कर रहा था कि क्या काम किया है।
user880954

कॉफी और दांतों के लिए सही है। क्या आपको यकीन है। .ignignore_global आपके $ HOME में है? आप कहते हैं कि आपने इसे git इंस्टॉल डायरेक्टरी में स्थापित किया है?
चार्ल्स बीपी

किसी भी विचार क्यों यह अभी भी यहाँ काम नहीं करता है? मुझे एक .7z फाइल मिली जिसे मैं छोड़ना चाहता हूं; मैंने ये नियम जोड़े: gist.github.com/octocat/9257657 ; और फ़ाइल बदलने के बाद, यह अभी भी चालू हो जाता है। .it :(
कुंभ राशि

3
हां, gitignoreफ़ाइल केवल
अनटैक की

1
एक और बात जो मैंने अभी देखी है वह थी। लाइन की पैटर्न .gitignore_global फ़ाइल को परियोजना के मुख्य निर्देशिका से पथ से मेल खाना चाहिए। उदाहरण के लिए, यदि प्रोजेक्ट का नाम myProject है, जो myProject / sql / init में SQL कोड उत्पन्न करता है, और आप myProject / sql / init / * को अनदेखा करना चाहते हैं। प्रवेश को * / sql / init / होना चाहिए। इसी तरह, myProject / msg / dao / और myProject / dao में DAO / DTO कोड जेनरेट करने के लिए, dao उपनिर्देशिकाओं में सभी फ़ाइलों को पकड़ने के लिए दो प्रविष्टियाँ होनी चाहिए - * / * / dao / और * / dao और होनी चाहिए।
कीथ किबलर

82

सोचा था कि मैं इस पर चिप करूँगा। वैश्विक अनदेखी फ़ाइल काम नहीं करने का एक और कारण है। यह ऐसा कुछ है जो मुझे नहीं लगता कि पहले के उत्तरों में शामिल किया गया है। यह इतना स्पष्ट रूप से स्पष्ट है कि - निश्चित रूप से - यह याद करना बहुत आसान है।

यह है, कि git केवल नई फ़ाइलों को अनदेखा करेगा । यदि फ़ाइल पहले ही गिट द्वारा ट्रैक की जा रही है, तो निश्चित रूप से गिट इसे अनदेखा नहीं करेगा! तो किसी भी gitignoreया excludeफ़ाइल में जो भी पैटर्न लागू नहीं होता है

यह समझ आता है। क्यों यह पहले से ही ट्रैकिंग है फ़ाइलों के संशोधनों को अनदेखा करना चाहेगा? यदि फ़ाइल को अनदेखा करना है, तो आपको पहले इसे ट्रैक न करने के लिए गिट को बताना होगा, फिर इसे मैनुअल में बताए अनुसार अनदेखा करें। फ़ाइलों को अनट्रैक करने के तरीके के बारे में जानकारी के लिए, यह उत्तर देखें

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

git update-index --assume-unchanged file

अंत में, डिबगिंग गिट पर कुछ अतिरिक्त जानकारी यहां दी गई है।

Gitignore (5) मैनुअल पृष्ठ हमें बताता है:

पैटर्न जो एक उपयोगकर्ता चाहता है कि सभी स्थितियों (जैसे, उपयोगकर्ता के पसंद के संपादक द्वारा बैकअप या अस्थायी फ़ाइलें) में अनदेखी करने के लिए गिट आम ​​तौर पर उपयोगकर्ता के ~ / .conconfig में core.excludesfile द्वारा निर्दिष्ट फ़ाइल में जाते हैं। इसका डिफ़ॉल्ट मान $ XDG_CONFIG_HOME / git / अनदेखा है। यदि $ XDG_CONFIG_HOME या तो सेट या खाली नहीं है, तो इसके बजाय $ HOME / .config / git / अनदेखा का उपयोग किया जाता है।

तो, यह नया है और पिछले को बदल देता है ~/.gitignore_global बताए गए पिछले ।

अगला, और यह वास्तव में उपयोगी है, यह है कि 1.8.2 के रूप में, अब हमारे पास कुछ उत्कृष्ट डिबगिंग टूल हैं। अच्छी तरह से देखिए:

१. G.२ में बेहतर करने के लिए ज्ञान सीखें

यह दिखाता है कि नए check-ignoreझंडे का उपयोग कैसे किया जाए, यह सत्यापित करने के लिए कि git आपके पैटर्न को सफलतापूर्वक अनदेखा कर रहा है, जैसे

git check-ignore bin/a.dll --verbose


8
git update-index --assume-unchanged fileवास्तव में मैं क्या देख रहा था, धन्यवाद!
जय

14

मैंने पाया कि जब मैंने global core.excludesfileइस तरह परिभाषित किया था :

git config --global core.excludesfile $HOME/.config/git/ignore

यह काम नहीं किया। $HOMEचर का उपयोग न करने के लिए इसे बदलना , इस तरह:

git config --global core.excludesfile ~/.config/git/ignore

इसने तुरंत काम करना शुरू कर दिया। मनाइए कि यह किसी और के लिए सहायक हो।

जानकारी के लिए:

$ git --version
git version 1.7.10.2 (Apple Git-33)

मैंने यह भी देखा। मैंने दस्तावेज़ को स्किम्ड किया, लेकिन कुछ भी नहीं मिला: .ignignore (प्रति-निर्देशिका) और .git / जानकारी / बहिष्कृत के अलावा, git इस फ़ाइल में उन फ़ाइलों के पैटर्न के लिए दिखता है, जिन्हें ट्रैक नहीं किया जाना है। "~ /" $ HOME के ​​मूल्य तक विस्तारित है और "~ उपयोगकर्ता /" निर्दिष्ट उपयोगकर्ता के घर निर्देशिका में।
22

9

नोट: git1.7.12 (अगस्त 2012) शुरू :

का मूल्य:

  • core.attributesfile $ HOME / .config / git / विशेषताएँ और के लिए चूक
  • core.excludesfile$HOME/.config/git/ignoreक्रमशः इन फ़ाइलों के मौजूद होने पर चूक ।

इसलिए यदि आप एक $HOME/.config/git/attributesफ़ाइल बनाते हैं , तो आपको अपनी core.excludesfileसेटिंग सेट करने की भी आवश्यकता नहीं है ।


4

फ़ाइल आपके होम डायरेक्टरी में होनी चाहिए। खिड़कियों पर, इसका आमतौर पर मतलब होता है: C: \ दस्तावेज और सेटिंग्स \ [उपयोगकर्ता]।

लिनक्स पर यह है: / घर / [उपयोगकर्ता]


2

मुझे यह समस्या थी क्योंकि मैंने शुरू में 'git config core.excludefiles' को बिना --global और एक गलत मान के साथ कहा था, और इसलिए इसने स्थानीय रूप से संपत्ति को संग्रहीत किया था। ऐसा लगता है कि स्थानीय संपत्ति ने वैश्विक एक (जिसे सही मूल्य मिला था) को पूरी तरह से अनदेखा कर दिया।


2

एक अन्य कारण यह हो सकता है कि एक वैश्विक गिट अनदेखी काम नहीं कर रही है: पथ में अदृश्य वर्ण।

मुझे केवल यह पता चला कि यह मेरी समस्या थी जब क्रोम के एड्रेस बार में git-check-ign से चेतावनी संदेश पेस्ट करते समय , जहाँ यह सौभाग्य से दिखाई देता था:

यहां छवि विवरण दर्ज करें

(यह टर्मिनल पर दिखाई नहीं दे रहा था। और यह डिबगिंग का एक लंबा खरगोश छेद हो सकता है ... the)


1

मुझे वही समस्या हो रही थी (विंडोज पर)। मैंने अपनी ~/.gitconfigफ़ाइल जाँचना समाप्त कर दिया और पाया कि मेरा excludesfileसेट इस पर था:

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt

लेकिन यह होना चाहिए था:

excludesfile = C:\\Users\\myUserName\\.gitignore_global

मैंने इसे बदलने के बाद, सब कुछ वैसा ही काम करना चाहिए जैसा कि करना चाहिए।


1

इसके अलावा, मैं इस फ़ाइल के एन्कोडिंग के साथ एक अजीब बात थी। किसी तरह मेरे विंडोज 10 (पॉवर्सशेल के साथ) ने "UTF-16 LE" एन्कोडिंग के साथ फ़ाइल बनाई और किसी तरह Git इसे संभाल नहीं सका। जब मैं एन्कोडिंग को सचमुच कुछ और काम करता हूं तो बहुत अधिक समझदार मूल्य में बदल देता है।


0

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

बस मेरे दो सेंट जोड़ने।


0

मैंने हाल ही में एक गलती की है और निम्न कमांड को चलाया है git config core.excludesfile tags जो बहिष्करण पथ को वर्तमान रिपॉजिटरी में एक स्थानीय फ़ाइल में बदल देता है, और यह कॉन्फिगरेशन को स्थानीय कॉन्फिगरेशन फ़ाइल के तहत लिखा गया है .git/config, इसलिए यह तय करने के लिए कि मैंने अभी .git/configफाइल खोली है और लाइन को हटा दिया है excludesfile tagsऔर सब कुछ सामान्य है।

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