Разрешить только некоторые файлы в подкаталогах с помощью .gitignore

У меня есть структура dir, как это:

static
    admin
    ajax_upload
    books
    css
    font
    media
    robots.txt
templates
src
build
lib

Я хочу игнорировать следующие директории:

  • Lib
  • построить
  • ЦСИ
  • статичным

Я хочу разрешить следующее:

  • статический/CSS/самозагрузка-styled.css
  • статический /CSS/main.css
  • статический/CSS/шрифт -. * CSS
  • статический/шрифт
  • статический/медиа/default.png
  • статический /robots.txt
  • Шаблоны

Поэтому я использую следующий .gitignore:

# Ignore
/lib
/src
/build
/static/*

# Allow
!/static/css/bootstrap-styled.css
!/static/css/main.css
!/static/css/font-*.css
!/static/font
!/static/media/default.png
!/static/robots.txt

Но это работает неправильно. Не могли бы вы мне помочь - что я здесь делаю неправильно? ТИА!

Подробнее

Реальная структура проекта такова:

static
    admin
        css
        img
        js
            admin
    ajax_upload
    books
    css
    font
    media
        uploads
            blog
            gallery
        default.png
    robots.txt
templates
src
build
lib

Ответ 1

Итак, .gitignore работает для меня:

# Ignore
lib/
src/
build/
static/**/*

# Allow
!static/css/bootstrap-styled.css
!static/css/main.css
!static/css/font-*.css
!static/font/*
!static/media/default.png
!static/robots.txt

Ответ 2

Попробуйте следующее:

# Ignore
/lib/
/src/
/build/
/static/

# Allow
!/static/css/bootstrap-styled.css
!/static/css/main.css
!/static/css/font-*.css
!/static/font
!/static/media/default.png
!/static/robots.txt

Я думаю, что это должно сработать.