git अपवाद को अनदेखा करें


326

मेरे पास एक gitignore फ़ाइल है जो git *.dllफ़ाइलों को अनदेखा करती है, और यह वास्तव में वह व्यवहार है जो मुझे चाहिए। हालांकि, अगर मुझे कोई अपवाद चाहिए (यानी कमिट करने में सक्षम foo.dll), तो मैं इसे कैसे हासिल कर सकता हूं?



fwiw, इस विषय पर डुप्लिकेट उत्तरों के granddaddy - एक है कि तुम पर दिखना चाहिए - शायद होगा .gitignore में कुछ फाइलों के अलावा सब कुछ उपेक्षा बनाओ बहुत ही नियमित गतिविधि और कई अच्छा जवाब -। मैं इस उत्तर का एक विशेष प्रशंसक हूं , जो स्पष्ट और संपूर्ण लगता है।
Kay V

जवाबों:


447

उपयोग:

*.dll    #Exclude all dlls
!foo.dll #Except for foo.dll

से gitignore :

एक वैकल्पिक उपसर्ग! जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा छोड़ी गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। यदि एक नकारात्मक पैटर्न मेल खाता है, तो यह निम्न पूर्ववर्ती पैटर्न स्रोतों को ओवरराइड करेगा।


22
उत्तर फॉर्म देखें @Matiss Jurgelis - यह महत्वपूर्ण है
Dan

7
क्या मैं अपनी परियोजना के gitignore में अपवाद जोड़ सकता हूं और मेरे वैश्विक gitignore से नहीं? उदाहरण के लिए, यदि मैं सभी DLL को एक निर्देशिका में शामिल करना चाहता था? मेरे gitignore_global *.dllमें है, और मेरी परियोजना gitignore है, !Libs/*.dllलेकिन यह काम नहीं कर रहा है।
जोएल किन्ज़ेल

1
@jkinz, आपको कोशिश करनी चाहिए !Libs/**/*.dll
रोसबर्ग लीन्हारेस

!**/Libs/*.dllफ़ोल्डर संरचना के आधार पर @RosbergLinhares या ।
JAB

2
धन्यवाद, लेकिन एक मैक पर उसी लाइन पर टिप्पणी को जोड़ना जैसा !foo.dllकि कमांड को अमान्य करता है। अगर मैं टिप्पणी को एक अलग पंक्ति पर जोड़ता हूं तो यह काम करता है।
जियाकोमो

261

यदि आप लिखते हैं तो Git फ़ोल्डर की उपेक्षा करता है:

/js

लेकिन यह अपवाद नहीं जोड़ सकता है अगर आप करते हैं: !/js/jqueryया !/js/jquery/या!/js/jquery/*

आपको लिखना होगा:

/js/* 

और उसके बाद ही आप इस तरह सबफ़ोल्डर्स को छोड़कर कर सकते हैं

!/js/jquery

44
यह बहुत महत्वपूर्ण है। धन्यवाद!
विसिऑन

3
हालांकि ऐसा लगता है कि आप नेस्टेड फोल्डर नहीं जोड़ सकते हैं, उदाहरण के !/js/jquery/xyzlibलिए नजरअंदाज नहीं किया जाएगा ...
अज्ञानी

2
जैसा कि @Ignorant कहते हैं, आप जिस फ़ोल्डर को अनदेखा नियम से "छोड़कर", उसी स्थान पर "*" के रूप में होना चाहिए
Red Pea

3
इसलिए /js/*, !/js/jquery, /js/jquery/*, !/js/jquery/xyzlib? ऐसा करने के लिए एक अजीब तरह से लगता है ...
इम्पीरियल नाइट

आपने वास्तव में मेरी मदद की।
लोया

55

आप बस कर सकते हैं git add -f path/to/foo.dll

.gitignore सामान्य ट्रैकिंग और जैसे सामान के लिए केवल फ़ाइलों को अनदेखा करता है git add .


4
अधिक जानकारी के लिए, -fरेपो में इस फ़ाइल को जोड़ने के लिए बाध्य करने के लिए कहता है क्योंकि यह आपकी वजह से पहले इसे अनदेखा कर सकता है.gitignore
RPDeshaies

यदि आपके पास केवल एक फ़ाइल है तो बहुत अच्छा है, यदि आपको पैटर्न की आवश्यकता है तो कम उपयोगी है
Liam


15

बस !एक बहिष्करण नियम से पहले जोड़ें ।

Gitignore मैन पेज के अनुसार :

पैटर्न में निम्नलिखित प्रारूप हैं:

...

  • एक वैकल्पिक उपसर्ग! जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा छोड़ी गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। यदि एक नकारात्मक पैटर्न मेल खाता है, तो यह निम्न पूर्ववर्ती पैटर्न स्रोतों को ओवरराइड करेगा।


4

यदि आप Visual Studio के साथ काम कर रहे हैं और आपका .dll एक binफ़ोल्डर में होता है , तो आपको .dll फ़ाइल के लिए अपवाद जोड़ने से पहले आपको विशेष बिन फ़ोल्डर के लिए एक अपवाद जोड़ना होगा। उदाहरण के लिए

!SourceCode/Solution/Project/bin
!SourceCode/Solution/Project/bin/My.dll

ऐसा इसलिए है क्योंकि डिफ़ॉल्ट विज़ुअल स्टूडियो .gitignoreफ़ाइल में इसके लिए एक अनदेखा पैटर्न शामिल है[Bbin]/

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

मैं यह पता लगा पा रहा था कि दौड़ने के अलावा मेरी फाइल क्यों नहीं चल रही थी

git check-ignore -v -- SourceCode/Solution/Project/bin/My.dll

गेट बैश विंडो से। इससे [Bbin]/पैटर्न लौट आया ।


2

समाधान git उपेक्षा नियम और अपवाद नियम के बीच संबंध पर निर्भर करता है:

  1. एक ही स्तर पर फ़ाइलें / फाइलें: @Skilldrick समाधान का उपयोग करें ।
  2. फ़ोल्डर / सबफ़ोल्डर्स: @Matiss Jurgelis समाधान का उपयोग करें ।
  3. विभिन्न स्तरों में फाइलें / फाइलें या फाइल / सबफोल्डर्स: आप ऐसा कर सकते हैं:

    *.suo
    *.user
    *.userosscache
    *.sln.docstates
    
    # ...
    
    # Exceptions for entire subfolders
    !SetupFiles/elasticsearch-5.0.0/**/*
    !SetupFiles/filebeat-5.0.0-windows-x86_64/**/*
    
    # Exceptions for files in different levels
    !SetupFiles/kibana-5.0.0-windows-x86/**/*.suo
    !SetupFiles/logstash-5.0.0/**/*.suo
    

1

चूंकि Git 2.7.0 Git अपवादों को ध्यान में रखेगा। आधिकारिक रिलीज़ नोट्स से:

  • बाद में "/ / abc / def" को पहले "/ abc" को ओवरराइड करने की अनुमति दें। समान .ignignore फ़ाइल में दिखाई देने वाली "को / abc डायरेक्टरी में सब कुछ व्यक्त करना आसान बनाने के लिए इसे छोड़कर ..." को छोड़ दें।

https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt


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