Не могу понять, как 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
Кто-нибудь может помочь с этим?
Ответы
Ответ 1
Попробуйте ниже игнорировать, как вам нужно:
/*
!/app/
/app/*
!/app/code/
/app/code/*
!/app/code/local/
Следующее обсуждение было полезным: http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html, особенно следующее из Линуса:
That by design. You've chosen to ignore those directories; they match "*"
themselves. Thus, 'git add .' doesn't descend into them looking for files.
Итак, в основном, для каждого уровня, в который вы должны войти, не записывайте эту папку и игнорируйте содержимое внутри этой папки.
Ответ 2
Является ли это .gitignore в корне репо?
Попробуйте следующее:
/*
!/app/code/local
Ответ 3
Согласно документации:
"Невозможно повторно включить файл, если родительский каталог этого файла исключен."
Например, если вы уже работали с репозиторией и сказали Git игнорировать родительский каталог, сделали некоторые коммиты, а затем вернулись и попытались разрешить некоторый подкаталог исключенного каталога, он не будет включить этот подкаталог , даже если ваш .gitignore
файл верен. Чтобы обойти это, вам нужно принудительно добавить его (с флагом -f
):
git add -f {file}
Как только это будет сделано, последующие изменения будут отслеживаться.