Не могу понять, как gitignore игнорирует папки

Я хочу создать репозиторий для моего проекта Magento. В корневом каталоге много папок и файлов, и я время от времени меняю только одну папку: app/code/local/

Все остальное я хочу игнорировать. Но.. не могу. Мой файл.gitignore:

*
!app/code/local/
!app/code/local/*

Затем, когда я пытаюсь добавить папку в репо, я получаю сообщение об ошибке:

git add app/code/local/Mds/

The following paths are ignored by one of your .gitignore files:
app
Use -f if you really want to add them.
fatal: no files added

Может кто-нибудь, пожалуйста, помогите с этим?

3 ответа

Решение

Попробуйте ниже, чтобы игнорировать, как вам нужно:

/*
!/app/
/app/*
!/app/code/
/app/code/*
!/app/code/local/

Следующее обсуждение было полезно: http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html, особенно следующее от Линуса:

That's by design. You've chosen to ignore those directories; they match "*" themselves. Thus, 'git add .' doesn't descend into them looking for files.

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

Это.gitignore в корне репо?

Попробуй это:

/*
!/app/code/local

Согласно документации:

"Невозможно повторно включить файл, если исключен родительский каталог этого файла".

Например, если вы уже работали с репозиторием и сказали Git игнорировать родительский каталог, сделали некоторые коммиты, а затем вернулись и попытались разрешить какой-то подкаталог исключенного каталога, он не будет включать этот подкаталог даже если твой .gitignore файл правильный. Чтобы обойти это, вы должны заставить его добавить (с -f флаг):

git add -f {file}

Как только это будет сделано, последующие изменения будут отслежены.

Другие вопросы по тегам