Подтвердить что ты не робот

Git Игнорировать все в каталоге, кроме подпапок

Это моя структура папок:

data/
    .gitignore
    uploads/
        .gitignore

Я хотел бы зафиксировать папки, но не файлы внутри них.

Итак, я добавляю файлы .gitignore в каждую папку со следующим содержимым:

# Ignore everything in this directory
*
# Except this file
!.gitignore

Проблема заключается в том, что * совпадает также с каталогами, поэтому git отслеживает только data/.gitignore

4b9b3361

Ответ 1

Решение довольно просто, добавьте !*/ в файлы .gitignore, и только файлы в текущей папке будут проигнорированы

# Ignore everything in this directory
*
# Except this file
!.gitignore
# Except folders
!*/

Ответ 2

Пожалуйста, не злоупотребляйте файлами .gitignore. Лучше придерживайтесь способов по умолчанию, поэтому позже разработчики могут быстро войти в ваш проект.

  • Добавить пустой .gitkeep файл в папки, которые вы хотите зафиксировать без файлов
  • Исключить папки, но не .gitkeep из вашего основного .gitignore файла.

    folder/*
    !folder/.gitkeep
    

Это игнорирует все файлы в папке, но не файл .gitkeep. Теперь папка будет загружаться только с содержимым .gitkeep в качестве содержимого.

Ответ 3

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

*.*
!.gitignore
!*/*