कुछ फ़ाइलों को छोड़कर .gitignore सब कुछ अनदेखा करें


1696

मैं समझता हूं कि गिग के संस्करण नियंत्रण से एक .gitignore फ़ाइल क्लोक निर्दिष्ट फ़ाइलें। मेरे पास एक प्रोजेक्ट (LaTeX) है जो बहुत सारी अतिरिक्त फ़ाइलों (.auth, .dvi, .pdf, लॉग्स आदि) को उत्पन्न करता है क्योंकि यह चलता है, लेकिन मैं नहीं चाहता कि उन पर नज़र रखी जाए।

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

फिर भी, क्या परियोजना फ़ाइलों के मूल में आउटपुट फ़ाइलों को रखने और उपयोग करने के लिए कोई भी संभव तरीका है। Gign के साथ नज़र रखने वाली फ़ाइलों को छोड़कर, सब कुछ अनदेखा करने के लिए .ignignore? कुछ इस तरह

# Ignore everything
*

# But not these files...
script.pl
template.latex
# etc...

12
का डुप्लीकेट stackoverflow.com/q/9162919/321973 (मुझे पता है कि नए है, लेकिन इस सवाल का जवाब और भी सही है)। वास्तव में यह उत्तर शायद सबसे अच्छा है
टोबियास किन्ज़लर

जवाबों:


2435

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

# Ignore everything
*

# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...

# ...even if they are in subdirectories
!*/

# if the files to be tracked are in subdirectories
!*/a/b/file1.txt
!*/a/b/c/*

14
ऐसा लगता है कि यह सबफ़ोल्डर्स को भी अनदेखा करता है, जैसे कि रूट डायर के अलावा किसी भी चीज़ में 'script.pl' नाम की कोई भी फाइल वैसे भी नहीं मिलेगी। मैं अब (* .pl के साथ) और सभी * .pl फ़ाइलों का उपयोग कर रहा हूँ, भले ही।
सबसिग्नोरी

38
@PandaWood उस मुद्दे को यहां लाया गया था (stackoverflow.com)। यह निर्देशिकाओं सहित सब कुछ से मेल खाते पहले अभिव्यक्ति के कारण होता है, जिसे आप कभी भी नकारते नहीं हैं। ठीक करने के लिए, जोड़ें (* *), जो वर्तमान निर्देशिका में किसी भी उपनिर्देशिका (पुनरावर्ती) से मेल खाता है। यह माता-पिता के जवाब में मदद नहीं करेगा, जो विशिष्ट फ़ाइलों को सफेद कर रहा है (यदि वे उपनिर्देशिका में हैं, तो आप संभवतः पूर्ण पथ को मैन्युअल रूप से निर्दिष्ट करना चाहेंगे, या निर्देशिका-विशिष्ट .gitignore फ़ाइलों का उपयोग कर सकते हैं)।
12

40
मुझे यह काम नहीं मिला। मैं एक फ़ोल्डर (जैसे wp/) को अनदेखा कर रहा हूं, लेकिन मैं उस फ़ोल्डर में कुछ फ़ाइलों को अनदेखा नहीं करना चाहता (जैसे wp/path/to/some/location/*)। एक ही रास्ता मैं यह काम करने के लिए मिल सकता है द्वारा कर रहा थाgit add -f wp/path/to/some/location/*
trusktr

13
@trusktr सिमोंट के !*/अपवाद का उपयोग करें
टोबीस किन्ज़लर

7
Geez कि अंतिम नियम: काम करने के लिए !*/एक .gitignoreफ़ाइल को कम करने के मेरे निरर्थक प्रयासों में सभी अंतर बनाता है । आपका बहुत बहुत धन्यवाद।
racl101

627

यदि आप इसके अंदर एक फ़ाइल को छोड़कर किसी निर्देशिका की संपूर्ण सामग्री को अनदेखा करना चाहते हैं, तो आप फ़ाइल पथ में प्रत्येक निर्देशिका के लिए कुछ नियमों को लिख सकते हैं। जैसे। Pigno / pluto / paperino.xml को छोड़कर pippo फ़ोल्डर को अनदेखा करना

.gitignore

pippo/*
!pippo/pluto
pippo/pluto/*
!pippo/pluto/paperino.xml

58
उत्कृष्ट उत्तर, लेकिन यह बाद में आने वाले किसी के लिए भी ध्यान देने योग्य है कि fooऔर समान नहींfoo/* हैं । काम करने के लिए, आपको बेस फोल्डर के लिए उपयोग करने की आवश्यकता हैfoo/*
बजे

20
@Mayank Pippo इतालवी में नासमझ है जबकि पेपरिनो डोनाल्ड डक है और प्लूटो अंग्रेजी में जैसा है। वे दिनों में प्रोग्रामिंग नमूनों के लिए चर नामों का एक बहुत ही सामान्य ट्रिपल हुआ करते थे। उन्हें फिर से पढ़ना अच्छा लगा .. :)
Ghidello

यदि @thislooksfun कहते हैं, तो महत्वपूर्ण है यदि आप "फ़ाइल एक्स को छोड़कर किसी फ़ोल्डर को बाहर करना चाहते हैं"।
Czechnology

8
मेरे लिए काम नहीं करता है: नोड_मॉड्यूल्स / *! नोड_मॉड्यूल्स / बूटस्ट्रैप
सुपरब्यूपरडूपर

1
@simple_human यह सच होगा कि अगर वह रिपॉजिटरी रूट की हर चीज को नजरअंदाज कर रहा है, या अगर उसके पास। निर्देशिका के अंदर उल्लेखित निर्देशिकाओं की देखभाल करने के लिए .ignignore फाइल है।
xZero

244

आप ज्यादातर मामलों में या के /*बजाय उपयोग करना चाहते हैं**/

उपयोग करना *मान्य है, लेकिन यह पुनरावर्ती रूप से काम करता है। यह तब से निर्देशिका में नहीं दिखेगा। लोग !*/फिर से श्वेतसूची निर्देशिकाओं का उपयोग करने की सलाह देते हैं , लेकिन वास्तव में उच्चतम स्तर के फ़ोल्डर को ब्लैकलिस्ट करना बेहतर होता है/*

# Blacklist files/folders in same directory as the .gitignore file
/*

# Whitelist some files
!.gitignore
!README.md

# Ignore all files named .DS_Store or ending with .log
**/.DS_Store
**.log

# Whitelist folder/a/b1/ and folder/a/b2/
# trailing "/" is optional for folders, may match file though.
# "/" is NOT optional when followed by a *
!folder/
folder/*
!folder/a/
folder/a/*
!folder/a/b1/
!folder/a/b2/
!folder/a/file.txt

# Adding to the above, this also works...
!/folder/a/deeply
/folder/a/deeply/*
!/folder/a/deeply/nested
/folder/a/deeply/nested/*
!/folder/a/deeply/nested/subfolder

ऊपर दिए गए कोड को छोड़कर सभी फाइलों की अनदेखी करेंगे .gitignore, README.md, folder/a/file.txt, folder/a/b1/और folder/a/b2/और उन पिछले दो फ़ोल्डरों में निहित सब कुछ। ( .DS_Storeऔर *.logफ़ाइलों को उन फ़ोल्डरों में अनदेखा किया जाएगा।)

जाहिर है मैं उदाहरण के लिए !/folderया !/.gitignoreभी कर सकता है ।

अधिक जानकारी: http://git-scm.com/docs/gitignore


3
बहुत चालाक, धन्यवाद। IMO, यह वर्डप्रेस साइटों के लिए इसके बारे में जाने का सबसे अच्छा तरीका है जिसमें न्यूनतम शामिल किए जाने के नियम हैं। इसके अलावा, आपकी अनुमति के बिना किसी भी नए प्लगइन्स, थीम या WP अपडेट को हटाया या जोड़ा नहीं जाता है। GitHub डेस्कटॉप का उपयोग करते समय मुझे लगता है कि .DS_Storeफ़ाइलों को अनदेखा नहीं किया गया है, लेकिन कमांड लाइन के माध्यम से यह कोई समस्या नहीं है। इसके आसपास जाने के लिए मुझे **/.DS_Storeअन्य सभी नियमों से नीचे जाना होगा ।
जिब्रान

7
मेरे आंतरिक वाक्यविन्यास हाइलाइटर को आपकी पोस्ट के शीर्षक पर एक अजीब प्रतिक्रिया हो रही है।
इसकानादोक

3
ग्रेसियस! आप किसी फ़ोल्डर में एक फ़ाइल को श्वेत सूची में भी रख सकते हैं ..! /some/folder/file.txt
PodTech.io

जब ऊपर दिए गए उत्तर नहीं थे, तो * के बजाय * का उपयोग करते हुए, मेरी सभी समस्याओं को ठीक कर दिया। मेरा एकमात्र सवाल अब क्या है? / फ़ोल्डर और / / फ़ोल्डर / * के बीच अंतर क्या है? यदि मैं * के बिना /! फ़ोल्डर का उपयोग करता हूं, तो यह अभी भी फ़ोल्डर में सभी फाइलों में परिवर्तन को उठाता है जहां तक ​​मैं बता सकता हूं।
dallin

1
@ डॉलिन में कोई अंतर नहीं है। एक फ़ोल्डर को श्वेतसूची में रखता है और दूसरा उस फ़ोल्डर के बच्चों को श्वेत सूची में रखता है, जो एक ही काम करता है। समस्या सिर्फ एक फ़ोल्डर या फ़ाइलों के माता-पिता से पहले यह श्वेत सूची में किया जा सकता है श्वेत सूची में होना करने के लिए किया है, तो आप ऐसा नहीं कर सकते /*तो !/nested/folder/*(या समतुल्य !/nested/folderकर के बिना) !/nested/या !/nestedपहले! (और शायद /nested/*बीच में)। याद रखने की एक ट्रिक यह है कि यदि आप एक गहराई से नेस्टेड सबफ़ोल्डर को सफ़ेद कर रहे हैं, तो आपको हर सबफ़ोल्डर में बच्चों को हर तरह से ब्लैक करने की ज़रूरत है, और वे ब्लैक लिस्ट "स्लैश स्टार" के साथ समाप्त हो जाएंगे ...
रयान टेलर

75

थोड़ा और विशिष्ट:

उदाहरण: सब कुछ अनदेखा करें webroot/cache- लेकिन रखें webroot/cache/.htaccess

cacheफ़ोल्डर के बाद स्लैश (/) पर ध्यान दें :

विफल रहता है

webroot/cache*
!webroot/cache/.htaccess

काम करता है

webroot/cache/*
!webroot/cache/.htaccess

यदि आप वीएस कोड का उपयोग कर रहे हैं, तो इसे एक फ़ोल्डर के साथ एक फ़ोल्डर में लागू करने के बाद फ़ाइल रंग को गलत तरीके से फैलाने के लिए नहीं; .आगामी प्रशासन इसे नजरअंदाज कर देगा लेकिन आपको देखना चाहिए कि दाईं ओर एक 'U' है, जो दर्शाता है कि यह पता चला है
OzzyTheGiant


28

निर्देशिका में कुछ फ़ाइलों को अनदेखा करने के लिए, आपको इसे सही क्रम में करना होगा :

उदाहरण के लिए, index.php और फ़ोल्डर "config" को छोड़कर फ़ोल्डर "एप्लिकेशन" में सब कुछ अनदेखा करें ऑर्डर पर ध्यान दें

आप पहले आप चाहते हैं नकारात्मक चाहिए।

विफल रहता है

application/*

!application/config/*

!application/index.php

काम करता है

!application/config/*

!application/index.php

application/*


38
गलत। आप "सब कुछ अनदेखा" करने के बाद नकार देते हैं।
कार्लोस

2
यह git statusजांचने के लिए कि क्या आपके परिवर्तन .gitignoreअपेक्षित रूप से काम करने के लिए मूर्ख नहीं हैं
फिलिप राथे

10
यदि आपको git statusयह नहीं बताया जा रहा है कि यह क्या देख रहा है और क्या अनदेखा है, तो आप कैसे जान सकते हैं कि यह काम कर रहा है?
क्रिश

1
@ क्रिस पहले git कैश को साफ़ करें। "Git rm --cached *" पहले करें फिर आप "git add --all" कर सकते हैं फिर एक "git स्टेटस" आपको सभी नए gitignore बदलाव दिखाएगा।
मार्क मैककॉरले

20

आप उपयोग कर सकते हैं git config status.showUntrackedFiles noऔर सभी अनट्रैक फ़ाइलें आपसे छिपाई जाएंगी। man git-configविवरण के लिए देखें।


यह बहुत अच्छा है यदि आप केवल कई में से कुछ फ़ाइलों को कमिट करना चाहते हैं!
जोश एम।

16

.Gitignore से फ़ोल्डर को बाहर करने के लिए, निम्नलिखित किया जा सकता है।

!app/

app/*
!app/bower_components/

app/bower_components/*
!app/bower_components/highcharts/

इसके bower_componentsअलावा सभी फ़ाइलों / सबफ़ोल्डर्स को अनदेखा करेगा /highcharts


14

इस बारे में इसी तरह के सवालों का एक समूह है, इसलिए मैंने जो पहले लिखा था उसे पोस्ट करूंगा:

मेरी मशीन पर काम करने का एकमात्र तरीका मुझे यह करना था:

# Ignore all directories, and all sub-directories, and it's contents:
*/*

#Now ignore all files in the current directory 
#(This fails to ignore files without a ".", for example 
#'file.txt' works, but 
#'file' doesn't):
*.*

#Only Include these specific directories and subdirectories and files if you wish:
!wordpress/somefile.jpg
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/
!wordpress/*/wp-content/themes/*
!wordpress/*/wp-content/themes/*/*
!wordpress/*/wp-content/themes/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*/*

ध्यान दें कि आपके द्वारा शामिल किए जाने वाले प्रत्येक स्तर के लिए आपको सामग्री को कैसे स्पष्ट रूप से अनुमति देना है। इसलिए अगर मेरे पास 5 उप-विषय हैं, तो मुझे अभी भी विषयों को समझने की जरूरत है।

यह @ यारिन की टिप्पणी से यहां है: https://stackoverflow.com/a/5250314/1696153

ये उपयोगी विषय थे:

मैंने भी कोशिश की

*
*/*
**/**

तथा **/wp-content/themes/**

या /wp-content/themes/**/*

उस में से किसी ने भी मेरे लिए काम नहीं किया। निशान और त्रुटि के बहुत सारे!


2
यह एकमात्र तरीका है जो विशेष रूप से कुछ फ़ाइल एक्सटेंशनों को शामिल करने के लिए काम करता है। इससे भी बेहतर, यह महान ASCII कला बनाता है: gist.github.com/Wolfgange3311999/91c671f5e4d3c56cf5a1
मैथ्यू डी। शोलेफ़ील्ड

10

मुझे सबफ़ोल्डर में समस्या थी।

काम नहीं करता:

/custom/*
!/custom/config/foo.yml.dist

काम करता है:

/custom/config/*
!/custom/config/foo.yml.dist

9

मैंने ऊपर दिए गए सभी उत्तरों की कोशिश की, लेकिन मेरे लिए किसी ने काम नहीं किया। Gitignore प्रलेखन ( यहां ) पढ़ने के बाद मुझे पता चला कि यदि आप पहले एक फ़ोल्डर को बाहर करते हैं, तो सबफ़ोल्डर में फ़ाइल नाम अनुक्रमित नहीं किए जा रहे हैं। इसलिए यदि आप किसी फ़ाइल को शामिल करने के लिए बाद में विस्मयादिबोधक चिह्न का उपयोग करते हैं, तो यह सूचकांक में नहीं पाया जाता है और इस प्रकार आपके ग्राहक में शामिल नहीं किया जा रहा है।

यही उपाय खोजने का तरीका था। मैंने इसे काम करने के लिए अपने फ़ोल्डर ट्री में सभी सबफ़ोल्डर्स के लिए अपवाद जोड़ने के साथ शुरू किया, जो एक नौकरी का एक नरक है। बाद में मैं नीचे विन्यास के लिए विस्तृत विन्यास को संकुचित करने में सक्षम था, जो कि प्रलेखन के विपरीत है।

कार्य करना।

# Ignore the 'Pro' folder, except for the '3rdparty' subfolder 
/Pro/*
!Pro/3rdparty/

# Ignore the '3rdparty' folder, except for the 'domain' subfolder
/Pro/3rdparty/*
!Pro/3rdparty/domain/

# Ignore the 'domain' folder, except for the 'modulename' subfolder
Pro/3rdparty/domain/*
!Pro/3rdparty/domain/modulename/

परिणाम के रूप में मैं अपने git क्लाइंट में देखता हूं कि Pro / 3rdparty / domain / modulename / folder के अंदर केवल दो फाइल का मंचन अगले कमिट के लिए किया जा रहा है, और ठीक वैसा ही मैं देख रहा था।

और अगर आपको एक ही फ़ोल्डर के कई सबफ़ोल्डर्स को वाइटेलिस्ट करने की आवश्यकता है, तो बहिष्करण चिह्न रेखाओं को बहिष्कृत समूह की तरह समूहित करें:

# Ignore the 'Pro' folder, except for the '3rdparty' subfolder 
/Pro/*
!Pro/3rdparty/

# Ignore the '3rdparty' folder, except for the 'domain' & 'hosting' subfolders
/Pro/3rdparty/*
!Pro/3rdparty/domain/
!Pro/3rdparty/hosting/

# Ignore the 'domain' folder, except for the 'modulename' subfolder
Pro/3rdparty/domain/*
!Pro/3rdparty/domain/modulename/

# Ignore the 'hosting' folder, except for the 'modulename' subfolder
Pro/3rdparty/hosting/*
!Pro/3rdparty/hosting/modulename/

उम्मीद के मुताबिक यह काम नहीं करेगा।


अंत में एक जवाब जो काम किया। मुझे आश्चर्य है कि जब मैं समझूंगा कि .itignore वास्तव में कैसे काम करता है
डेविड

8

कि मेरे लिए क्या काम किया है, मैं रेपो के लिए केवल एक कॉर्डोवा प्लगइन करना चाहता था:

...
plugins/*
!plugins/cordova-plugin-app-customization

8

मुझे पता है कि मुझे पार्टी के लिए देर हो रही है, लेकिन यहां मेरा जवाब है।

जैसा कि @ जोकिम ने कहा, किसी फाइल को नजरअंदाज करने के लिए, आप नीचे दी गई किसी चीज का उपयोग कर सकते हैं।

# Ignore everything
*

# But not these files...
!.gitignore
!someFile.txt

लेकिन अगर फ़ाइल नेस्टेड डायरेक्टरी में है, तो नियमों को मैन्युअल रूप से लिखना थोड़ा मुश्किल है।

उदाहरण के लिए, यदि हम किसी gitप्रोजेक्ट की सभी फाइलों को छोड़ना चाहते हैं , लेकिन वह नहीं है a.txtजो अंदर स्थित है aDir/anotherDir/someOtherDir/aDir/bDir/cDir। फिर, हमारे .gitignoreलिए कुछ ऐसा होगा

# Skip all files
*

# But not `aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt`
!aDir/
aDir/*
!aDir/anotherDir/
aDir/anotherDir/*
!aDir/anotherDir/someOtherDir/
aDir/anotherDir/someOtherDir/*
!aDir/anotherDir/someOtherDir/aDir/
aDir/anotherDir/someOtherDir/aDir/*
!aDir/anotherDir/someOtherDir/aDir/bDir/
aDir/anotherDir/someOtherDir/aDir/bDir/*
!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/
aDir/anotherDir/someOtherDir/aDir/bDir/cDir/*
!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt

ऊपर दी गई .gitignoreफ़ाइल छोड़कर सभी dirs और फ़ाइलों को छोड़ देगा!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt

जैसा कि आपने नोट किया होगा, उन नियमों को परिभाषित करना कठिन है।

इस बाधा को हल करने के लिए, मैंने git-do-not-ign नामक एक साधारण कंसोल एप्लिकेशन बनाया है जो आपके लिए नियम उत्पन्न करेगा। मैंने विस्तृत निर्देश के साथ प्रोजेक्ट को github में होस्ट किया है ।

उपयोग उदाहरण

java -jar git-do-not-ignore.jar "aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt"

उत्पादन

!aDir/
aDir/*
!aDir/anotherDir/
aDir/anotherDir/*
!aDir/anotherDir/someOtherDir/
aDir/anotherDir/someOtherDir/*
!aDir/anotherDir/someOtherDir/aDir/
aDir/anotherDir/someOtherDir/aDir/*
!aDir/anotherDir/someOtherDir/aDir/bDir/
aDir/anotherDir/someOtherDir/aDir/bDir/*
!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/
aDir/anotherDir/someOtherDir/aDir/bDir/cDir/*
!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt

यहां एक सरल वेब संस्करण भी उपलब्ध है

धन्यवाद।


7

मेरे पास बोवर से जेकरी और एंगुलर है। बोवर ने उन्हें अंदर कर दिया

/public_html/bower_components/jquery/dist/bunch-of-jquery-files
/public_html/bower_components/jquery/src/bunch-of-jquery-source-files
/public_html/bower_components/angular/angular-files

न्यूनतम जंक्शन distनिर्देशिका के अंदर है और कोणीय angularनिर्देशिका के अंदर है । मुझे केवल कम से कम फ़ाइलों की आवश्यकता है, जिसे गिथब करने के लिए शुरू किया जाए। कुछ .gitignore के साथ छेड़छाड़ करते हैं और यह वही है जो मैं करने में कामयाब रहा ...

/public_html/bower_components/jquery/*
!public_html/bower_components/jquery/dist
/public_html/bower_components/jquery/dist/*
!public_html/bower_components/jquery/dist/jquery.min.js
/public_html/bower_components/angular/*
!public_html/bower_components/angular/angular.min.js

आशा है कि कोई इसे उपयोगी पा सकता है।


7

मैंने इस तरह से इसे किया:

# Ignore everything
*

# Whitelist anything that's a directory
!*/

# Whitelist some files
!.gitignore

# Whitelist this folder and everything inside of it
!wordpress/wp-content/themes/my-theme/**

# Ignore this folder inside that folder
wordpress/wp-content/themes/my-theme/node_modules

# Ignore this file recursively
**/.DS_Store

gig status -uअप्रशिक्षित निर्देशिकाओं में व्यक्तिगत फ़ाइलों को देखने के लिए उपयोग करें - git statusआप केवल उन फ़ोल्डरों को देखेंगे, जो आपको यह सोचकर बेवकूफ बना सकते हैं कि अंदर सब कुछ ठीक नहीं हुआ था


5

सरल समाधान अगर आपको कुछ फ़ाइलों और कुछ रूट फ़ोल्डरों को छोड़कर सब कुछ अनदेखा करने की आवश्यकता है :

/*
!.gitignore
!showMe.txt
!my_visible_dir

जादू /*(जैसा कि ऊपर वर्णित है) यह सब कुछ (रूट) फ़ोल्डर में उपेक्षा करता है लेकिन पुनरावर्ती नहीं है।


4

मैं भी एकल फ़ाइलों की उपेक्षा के साथ कुछ मुद्दे थे। मैं उन्हें करने में सक्षम था, लेकिन मेरी आईडीई (इंटेलीज) ने हमेशा अनदेखा फाइलों के बारे में शिकायत की, जिन्हें ट्रैक किया जाता है।

git ls-files -i --exclude-from .gitignore

दो फाइलों को प्रदर्शित किया, जिन्हें मैंने इस तरह बाहर रखा है:

public/
!public/typo3conf/LocalConfiguration.php
!public/typo3conf/PackageStates.php

अंत में, यह मेरे लिए काम किया:

public/*
!public/typo3conf/
public/typo3conf/*
!public/typo3conf/LocalConfiguration.php
!public/typo3conf/PackageStates.php

कुंजी पहले फ़ोल्डर का निषेध था typo3conf/

इसके अलावा, ऐसा लगता है कि बयानों का क्रम मायने नहीं रखता है । इसके बजाय, आपको सभी सबफ़ोल्डर्स को स्पष्ट रूप से नकारने की आवश्यकता है, इससे पहले कि आप इसमें एकल फ़ाइलों को नकार सकते हैं।

फोल्डर !public/typo3conf/और फोल्डर कंटेंट public/typo3conf/*.gitignore के लिए दो अलग-अलग चीजें हैं।

महान धागा! इस मुद्दे ने मुझे थोड़ी देर के लिए परेशान किया;)


3

मेरे लिए अब तक कुछ भी काम नहीं किया क्योंकि मैं एक जार को परिवाद से जोड़ने की कोशिश कर रहा था।

यह काम नहीं किया:

build/*
!build/libs/*
!build/libs/
!build/libs/myjarfile.jar 

यह काम किया:

build/*
!build/libs

3

मुझे यह काम मिला

# Vendor
/vendor/braintree/braintree_php/*
!/vendor/braintree/braintree_php/lib

2

ओपी के रूप में इसी तरह का मुद्दा था, लेकिन शीर्ष 10 उत्क्रमित उत्तर में से किसी ने भी वास्तव में काम नहीं किया
मैं अंत में निम्नलिखित पाया

गलत सिंटैक्स:

*
!bin/script.sh

सही सिंटैक्स:

*
!bin
!bin/script.sh

Gitignore मैन पेज से स्पष्टीकरण :

एक वैकल्पिक उपसर्ग ""! जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा छोड़ी गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। किसी फ़ाइल को फिर से शामिल करना संभव नहीं है यदि उस फ़ाइल की मूल निर्देशिका को बाहर रखा गया है । Git प्रदर्शन कारणों के लिए बहिष्कृत निर्देशिका को सूचीबद्ध नहीं करता है, इसलिए निहित फ़ाइलों पर किसी भी पैटर्न का कोई प्रभाव नहीं पड़ता है, कोई फर्क नहीं पड़ता कि वे कहाँ परिभाषित हैं।

विस्तारित उदाहरण:

$ पेड़।

.
├── .gitignore
└── bin
    ├── ignore.txt
    └── sub
        └── folder
            └── path
                ├── other.sh
                └── script.sh

$ बिल्ली

*
!.gitignore
!bin
!bin/sub
!bin/sub/folder
!bin/sub/folder/path
!bin/sub/folder/path/script.sh

$ जीआईटी की स्थिति - अनियंत्रित-फाइलें - असाइन की गई

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        bin/sub/folder/path/script.sh

Ignored files:
  (use "git add -f <file>..." to include in what will be committed)
        bin/ignore.txt
        bin/sub/folder/path/other.sh

nothing added to commit but untracked files present (use "git add" to track)

1

सार

# Ignore everything
*

# But not these files...
!script.pl
!template.latex

और शायद शामिल हैं:

!.gitignore

संदर्भ

से https://git-scm.com/docs/gitignore :

एक वैकल्पिक उपसर्ग " !" जो पैटर्न को नकारता है; पिछले पैटर्न द्वारा छोड़ी गई कोई भी मिलान फ़ाइल फिर से शामिल हो जाएगी। यदि किसी फ़ाइल की मूल निर्देशिका को बाहर रखा गया है तो किसी फ़ाइल को फिर से शामिल करना संभव नहीं है। Git प्रदर्शन कारणों के लिए बहिष्कृत निर्देशिका को सूचीबद्ध नहीं करता है, इसलिए निहित फ़ाइलों पर किसी भी पैटर्न का कोई प्रभाव नहीं पड़ता है, कोई फर्क नहीं पड़ता कि वे कहाँ परिभाषित हैं। \पहले " !" पैटर्न के लिए एक बैकस्लैश (" ") सामने रखें जो कि शाब्दिक " !" से शुरू होता है , उदाहरण के लिए, " \!important!.txt"।

...

विशिष्ट निर्देशिका को छोड़कर सब कुछ बाहर करने के लिए उदाहरण foo/bar(ध्यान दें /*- स्लैश के बिना, वाइल्डकार्ड भी सब कुछ बाहर कर देगा foo/bar):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

0

मुझे लगता है कि मेरे लिए कुछ ऐसा काम किया गया है जिसका किसी और ने उल्लेख नहीं किया है।

# Ignore everything
*

# But not these files...
!.gitignore
!script.pl
!template.latex
# etc...

# And if you want to include a sub-directory and all sub-directory and files under it, but not all sub-directories
!subdir/
!subdir/**/*

मूल रूप से, यह एक उप-निर्देशिका को नजरअंदाज करने से रोकने के लिए लगता है, आपके पास दो प्रविष्टियाँ होनी चाहिए, एक उप-निर्देशिका के लिए !subdir/और फिर एक अन्य जो इसके तहत सभी फ़ाइलों और फ़ोल्डरों को विस्तारित करता है!subdir/**/*

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