Не могу понять, как 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.
Таким образом, в основном, для каждого уровня вы должны войти, игнорировать эту папку и игнорировать содержимое в этой папке.
Согласно документации:
"Невозможно повторно включить файл, если исключен родительский каталог этого файла".
Например, если вы уже работали с репозиторием и сказали Git игнорировать родительский каталог, сделали некоторые коммиты, а затем вернулись и попытались разрешить какой-то подкаталог исключенного каталога, он не будет включать этот подкаталог даже если твой .gitignore
файл правильный. Чтобы обойти это, вы должны заставить его добавить (с -f
флаг):
git add -f {file}
Как только это будет сделано, последующие изменения будут отслежены.