यहां मेरी वर्तमान निर्देशिका की सामग्री है।क्या पैटर्न करता है .gitignore का पालन करें?
$ ls
foo.foo
$ ls -a
. .. .bar.foo .foo foo.foo .gitignore
फिर मैं इस निर्देशिका को एक गिट भंडार में बदल देता हूं।
$ git init
Initialized empty Git repository in /home/lone/foo/.git/
$ ls -a
. .. .bar.foo .foo foo.foo .git .gitignore
यहां .gitignore
की सामग्री है।
$ cat .gitignore
*.foo
मुझे लगता है कि .gitignore
में पैटर्न खोल में एक ही पैटर्न से अलग ढंग से व्यवहार करता है। शेल *.foo
केवल गैर-छिपी हुई फाइलों से मेल खाता है, यानी फ़ाइल नाम जो एक अवधि से शुरू नहीं होते हैं।
$ echo *.foo
foo.foo
लेकिन *.foo
.gitignore
में किसी भी फाइल, छिपा या गैर छिपा है, जो .foo
साथ समाप्त होता है मिलान करने के लिए लगता है।
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
मैं कहाँ पैटर्न कि .gitignore इस प्रकार की सटीक परिभाषा के बारे में अधिक सीख सकते हैं, जिससे कि मैं समझ सकता है, जहां और क्यों अपने व्यवहार खोल ग्लोब पैटर्न से भिन्न?
यहां एक संसाधन है: https://git-scm.com/docs/gitignore। कुछ स्थितियों के तहत इसे एक शैल ग्लोब की तरह माना जाता है। "अन्यथा, गिट एफएनएम_PATHNAME ध्वज के साथ fnmatch (3) द्वारा उपभोग के लिए उपयुक्त शेल ग्लोब के रूप में पैटर्न का व्यवहार करता है" (लेकिन जब यह नहीं करता है तब इसके ऊपर की सामग्री को पढ़ें) – hiandbaii
@hiandbaii मैंने इस प्रश्न को पूछने से पहले उस दस्तावेज़ को पढ़ा । हालांकि, कुछ चीजें मुझे स्पष्ट नहीं हैं। क्या शैल ग्लोब पैटर्न को संसाधित करने के लिए 'fnmatch (3)' का भी उपयोग करता है? उस स्थिति में ''' '' '' से पहले शून्य वर्णों से मेल नहीं खाता है (यानी छिपी हुई फाइलें) लेकिन गिटिनोरोर करता है? मैं 'gitignore' दस्तावेज़ में सटीक अनुभाग नहीं ढूंढ पा रहा हूं जो इसे समझाता है। –