दिलचस्प पोस्ट
एचटीटीपीएस एचटीटीपी क्लायंट का इस्तेमाल करते हुए कॉल करें बोतल पाई: jQuery AJAX अनुरोधों के लिए कॉरस सक्षम करना एक स्लेटेड साइड के साथ आकार (उत्तरदायी) Google पत्रक में अपलोड किए गए CSV या XLS फ़ाइल से डेटा को स्वचालित रूप से आयात कैसे करें विस्तारित सूची दृश्य के 3 से अधिक स्तरों को कैसे प्रदर्शित किया जाए? हस्ताक्षरित लोगों पर अहस्ताक्षरित मानों का उपयोग कब करना है? SQL सर्वर 2008 विंडोज़ एथ लॉगिन त्रुटि: लॉगिन एक अविश्वस्त डोमेन से है कैसे पता लगाएंगे कि मशीन डोमेन से जुड़ा हुआ है (सी # में)? सी -11 में सिंथेट और _जनर का नमूना उपयोग उपयोगकर्ता इसे डाउनलोड करने के बाद एक फ़ाइल को हटा रहा है किसी फ़ाइल में कोई शब्दकोश कैसे सहेज सकता है? गिट धक्का का उपयोग करके एक प्रोजेक्ट को परिनियोजित करें जावास्क्रिप्ट – दो तिथियों के बीच मिनट प्राप्त करें क्या सी / सी ++ में एक प्रकार का डाली है? Std :: stoi के साथ समस्याएं, मिनजीड जीसीसी 4.7.2 पर काम नहीं कर रही है

जो कि जीटग्नोर नियम मेरी फाइल की अनदेखी कर रहा है

क्या यह देखने का कोई तरीका है कि जीआईटी द्वारा कुछ फाइल को क्यों नज़रअंदाज़ किया जा रहा है (यानी कौन से नियम .gitignore फ़ाइल में फाइल को अनदेखा कर रहा है)?

कल्पना कीजिए कि मेरे पास यह (या अधिक जटिल परिदृश्य है, जिसमें सैकड़ों फ़ोल्डर्स और .gitignore फाइलें हैं।)

 / -.gitignore -folder/ -.gitignore -subfolder/ -.gitignore -file.txt 

अगर मैं git add folder/subfolder/file.txt जीआईटी चलाता हूं तो उसे इसकी अनदेखी की शिकायत हो सकती है:

 The following paths are ignored by one of your .gitignore files: folder/subfolder/file.txt Use -f if you really want to add them. 

क्या यह जानने का कोई तरीका है कि सभी संभव में से। .gitignore पास इस फाइल को अनदेखा करने का नियम है, और क्या नियम भी दिखाता है? पसंद:

 The following paths are ignored by your folder/.gitignore file (line 12: *.txt) folder/subfolder/file.txt Use -f if you really want to add them. 

या केवल:

 $ git why-is-ignored folder/subfolder/file.txt folder/.gitignore:12:*.txt 

वेब के समाधान से एकत्रित समाधान "जो कि जीटग्नोर नियम मेरी फाइल की अनदेखी कर रहा है"

 git check-ignore -v filename 

अधिक विवरण के लिए मैन पेज देखें

मूल उत्तर निम्नानुसार है:

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

अद्यतनः वाह, यह मेरे द्वारा अपेक्षा की गई बहुत कठिन था git के बहिष्कार से निपटने में काफी गुप्त हैं। वैसे भी, यह एक लगभग पूर्ण श्रृंखला है जो आज के अपस्ट्रीम master शाखा पर लागू होता है। परीक्षा सुइट 99% पूर्ण है, लेकिन मैंने --stdin विकल्प का प्रबंधन अभी तक पूरा नहीं किया है। उम्मीद है कि मैं इस सप्ताह के अंत में प्रबंधन करेगा, और फिर git मेलिंग सूची में मेरे पैच को जमा करें।

इस बीच, मैं निश्चित रूप से किसी से भी परीक्षण करने का स्वागत करता हूं जो कि ऐसा करने में सक्षम है – मेरे git कांटा से सिर्फ क्लोन करें, check-ignore शाखा की check-ignore , और इसे सामान्य रूप से संकलित करें

2 अद्यतन: यह किया है! नवीनतम संस्करण ऊपर के अनुसार github पर है, और मैंने पीयर समीक्षा के लिए git मेलिंग सूची में पैच श्रृंखला प्रस्तुत की है । देखते हैं कि वे क्या सोचते हैं …

3 अपडेट: हैकिंग / पैच की समीक्षा / चर्चा / इंतजार के कई महीनों के बाद, मुझे यह कहते हुए खुशी हो रही है कि यह सुविधा अब गिट की master ब्रांच पर पहुंच गई है , और यह अगले रिलीज (1.8.2, 8 मार्च 2013)। यहां check-ignore पुस्तिका पृष्ठ है । ओफ़्फ़, यह मेरे काम की अपेक्षा अधिक काम था!

4 अद्यतन: यदि आप इस उत्तर के बारे में पूरी कहानी में रुचि रखते हैं और इस सुविधा को लागू किया गया है, तो GitMinutes पॉडकास्ट के एपिसोड # 32 को देखें ।

जीआईटी 2.8 (मार्च 2016) अपडेट करें:

 GIT_TRACE_EXCLUDE=1 git status 

" मान्य करने के लिए .gitignore फ़ाइल का एक तरीका " देखें

यह नीचे वर्णित git check-ignore -v पूरक है


मूल उत्तर: सितंबर 2013 (git 1.8.2, फिर 1.8.5+):

git check-ignore git 1.8.5 / 1.9 (Q4 2013) में फिर से सुधार:

" git check-ignore " " git add " और " git status " के रूप में उसी नियम का अनुसरण करता है जिसमें उपेक्षा / बाहर की जाने वाली तंत्र पहले से ट्रैक किए गए पथों पर प्रभाव नहीं लेते हैं
" --no-index " विकल्प के साथ, यह पता लगाने के लिए इस्तेमाल किया जा सकता है कि कौन सा पथ अनदेखा कर दिया जाना चाहिए, गलती से सूचकांक में जोड़ा गया है

https://github.com/flashydave से 8231fa6 देखें:

check-ignore वर्तमान में दिखाता है कि कैसे। .gitignore नियम अनजान पथ का इलाज करेंगे। ट्रैक किए गए पथ उपयोगी आउटपुट उत्पन्न नहीं करते हैं
यह डिबगिंग को रोकता है कि क्यों एक रास्ता अप्रत्याशित रूप से ट्रैक हो गया जब तक कि उस पथ को पहली बार git rm --cached <path> साथ अनुक्रमणिका से हटा दिया गया।

विकल्प --no-index में होने वाले पथ की जांच को बायपास करने के लिए कमांड को बताता है और इसलिए ट्रैक किए गए पथों को भी जांचने की अनुमति देता है।

हालांकि यह व्यवहार, git add और git status की विशेषता से भटक जाता है इसके उपयोग के मामले में कोई भी उपयोगकर्ता भ्रम पैदा करने की संभावना नहीं है।

सही व्यवहार सुनिश्चित करने के लिए मानक अनदेखी के खिलाफ इस विकल्प की जांच करने के लिए टेस्ट स्क्रिप्ट संवर्धित किए जाते हैं।


 --no-index:: 

जांच करते समय इंडेक्स में न देखें।
इसका इस्तेमाल किया जा सकता है:

  • डिबग करने के लिए क्यों कोई रास्ता पथ पर नज़र रखता है जैसे git add . और उपयोगकर्ता द्वारा अपेक्षित नियमों से अनदेखा नहीं किया गया था या
  • जब git add -f साथ जोड़े गए मार्ग से मिलान करने के लिए निषेध सहित पैटर्न विकसित करना

मुझे मैन पेज में कुछ भी नहीं मिल सकता है लेकिन यह एक त्वरित और गंदे स्क्रिप्ट है जो आपकी फ़ाइल को प्रत्येक अभिभावकीय निर्देशिका में जांच सकेगी कि यह git-add'ed हो सकता है या नहीं। इस समस्या फ़ाइल को डाइरेक्टरी में चलाएँ:

 test-add.sh STOP_DIR FILENAME 

जहां STOP_DIR Git प्रोजेक्ट की शीर्ष स्तर की निर्देशिका है और FILENAME समस्या फ़ाइल का नाम है (किसी पथ के बिना)। यह पदानुक्रम के प्रत्येक स्तर पर एक ही नाम की एक खाली फ़ाइल बनाता है (यदि यह मौजूद नहीं है) और यह देखने के लिए कि क्या यह जोड़ा जा सकता है (यह स्वयं के बाद साफ होता है) एक git add -n का प्रयास करता है यह कुछ जैसा दिखता है:

 FAILED: /dir/1/2/3 SUCCEEDED: /dir/1/2 

लिपी:

 #!/usr/bin/env bash TOP=$1 FILE=$2 DIR=`pwd` while : ; do TMPFILE=1 F=$DIR/$FILE if [ ! -f $F ]; then touch $F TMPFILE=0 fi git add -n $F >/dev/null 2>&1 if [ $? = 0 ]; then echo "SUCCEEDED: $DIR" else echo "FAILED: $DIR" fi if [ $TMPFILE = 0 ]; then rm $F fi DIR=${DIR%/*} if [ "$DIR" \< "$TOP" ]; then break fi done