मेरे पास एक gitignore फ़ाइल है जो git *.dll
फ़ाइलों को अनदेखा करती है, और यह वास्तव में वह व्यवहार है जो मुझे चाहिए। हालांकि, अगर मुझे कोई अपवाद चाहिए (यानी कमिट करने में सक्षम foo.dll
), तो मैं इसे कैसे हासिल कर सकता हूं?
मेरे पास एक gitignore फ़ाइल है जो git *.dll
फ़ाइलों को अनदेखा करती है, और यह वास्तव में वह व्यवहार है जो मुझे चाहिए। हालांकि, अगर मुझे कोई अपवाद चाहिए (यानी कमिट करने में सक्षम foo.dll
), तो मैं इसे कैसे हासिल कर सकता हूं?
जवाबों:
उपयोग:
*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
से gitignore :
एक वैकल्पिक उपसर्ग! जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा छोड़ी गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। यदि एक नकारात्मक पैटर्न मेल खाता है, तो यह निम्न पूर्ववर्ती पैटर्न स्रोतों को ओवरराइड करेगा।
*.dll
में है, और मेरी परियोजना gitignore है, !Libs/*.dll
लेकिन यह काम नहीं कर रहा है।
!Libs/**/*.dll
।
!**/Libs/*.dll
फ़ोल्डर संरचना के आधार पर @RosbergLinhares या ।
!foo.dll
कि कमांड को अमान्य करता है। अगर मैं टिप्पणी को एक अलग पंक्ति पर जोड़ता हूं तो यह काम करता है।
यदि आप लिखते हैं तो Git फ़ोल्डर की उपेक्षा करता है:
/js
लेकिन यह अपवाद नहीं जोड़ सकता है अगर आप करते हैं:
!/js/jquery
या !/js/jquery/
या!/js/jquery/*
आपको लिखना होगा:
/js/*
और उसके बाद ही आप इस तरह सबफ़ोल्डर्स को छोड़कर कर सकते हैं
!/js/jquery
!/js/jquery/xyzlib
लिए नजरअंदाज नहीं किया जाएगा ...
/js/*
, !/js/jquery
, /js/jquery/*
, !/js/jquery/xyzlib
? ऐसा करने के लिए एक अजीब तरह से लगता है ...
आप बस कर सकते हैं git add -f path/to/foo.dll
।
.gitignore
सामान्य ट्रैकिंग और जैसे सामान के लिए केवल फ़ाइलों को अनदेखा करता है git add .
-f
रेपो में इस फ़ाइल को जोड़ने के लिए बाध्य करने के लिए कहता है क्योंकि यह आपकी वजह से पहले इसे अनदेखा कर सकता है.gitignore
एक निर्देशिका में सब कुछ बाहर करने के लिए, लेकिन कुछ उप-निर्देशिकाएं, निम्नलिखित करें:
wp-content/*
!wp-content/plugins/
!wp-content/themes/
बस !
एक बहिष्करण नियम से पहले जोड़ें ।
Gitignore मैन पेज के अनुसार :
पैटर्न में निम्नलिखित प्रारूप हैं:
...
- एक वैकल्पिक उपसर्ग! जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा छोड़ी गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। यदि एक नकारात्मक पैटर्न मेल खाता है, तो यह निम्न पूर्ववर्ती पैटर्न स्रोतों को ओवरराइड करेगा।
!foo.dll
, .ignignore, या (हर बार!) git add -f foo.dll
यदि आप 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]/
पैटर्न लौट आया ।
समाधान git उपेक्षा नियम और अपवाद नियम के बीच संबंध पर निर्भर करता है:
विभिन्न स्तरों में फाइलें / फाइलें या फाइल / सबफोल्डर्स: आप ऐसा कर सकते हैं:
*.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
चूंकि Git 2.7.0 Git अपवादों को ध्यान में रखेगा। आधिकारिक रिलीज़ नोट्स से:
- बाद में "/ / abc / def" को पहले "/ abc" को ओवरराइड करने की अनुमति दें। समान .ignignore फ़ाइल में दिखाई देने वाली "को / abc डायरेक्टरी में सब कुछ व्यक्त करना आसान बनाने के लिए इसे छोड़कर ..." को छोड़ दें।
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt