Почему git просматривает каталог продавцов?
У меня есть файл .gitignore с этим кодом:
/app/cache/*
/app/logs/*
/app/bootstrap*
/vendor/*
/web/bundles/
/app/config/parameters.yml
но когда я это сделаю:
$ git status
в любой ситуации (до и после добавления и фиксации), я получаю длинный текстовый вывод следующим образом:
...
# deleted: vendor/doctrine/orm/tools/sandbox/cli-config.php
# deleted: vendor/doctrine/orm/tools/sandbox/doctrine
# deleted: vendor/doctrine/orm/tools/sandbox/doctrine.php
# deleted: vendor/doctrine/orm/tools/sandbox/index.php
# deleted: vendor/doctrine/orm/tools/sandbox/xml/Entities.Address.dcm.xml
# deleted: vendor/doctrine/orm/tools/sandbox/xml/Entities.User.dcm.xml
# deleted: vendor/doctrine/orm/tools/sandbox/yaml/Entities.Address.dcm.yml
# deleted: vendor/doctrine/orm/tools/sandbox/yaml/Entities.User.dcm.yml
# modified: vendor/friendsofsymfony/user-bundle/FOS/UserBundle
# modified: vendor/gedmo/doctrine-extensions
# modified: vendor/herzult/forum-bundle/Herzult/Bundle/ForumBundle
# modified: vendor/kriswallsmith/assetic
# modified: vendor/symfony/property-access/Symfony/Component/PropertyAccess/.gitignore
# modified: vendor/symfony/property-access/Symfony/Component/PropertyAccess/StringUtil.php
# modified: vendor/symfony/symfony/CHANGELOG-2.1.md
...
Каталог поставщиков находится в файле .gitignore, поэтому я не знаю, что происходит.
Я пробовал с:
$ sudo git clean -dxf
но ничего не меняется.
Ответы
Ответ 1
В каталог репозитория зарегистрирован каталог поставщика. Чтобы удалить его, перейдите в свой git корень репо и запустите:
git rm -r --cached vendor
Это будет рекурсивно (из-за флага -r
) удалить поставщика из вашего репозитория git. Флаг --cached
будет поддерживать локальную копию каталога поставщика тактично. Обратите внимание, что если есть другие разработчики, работающие с репо, их копия каталога vendor
будет удалена, и они снова должны будут bundle install
.
Как только вы отследите каталог в git, вы можете зафиксировать это изменение, используя:
git commit -m "untrack vendor directory"
После этого .gitignore
с радостью будет игнорировать любые изменения в каталоге поставщика в следующий раз.
Кроме того, вам не нужны ваши записи в .gitignore
, чтобы начать с /
. Используйте /
, если вы хотите, чтобы только файлы/папки в корневой директории игнорировались, и любой файл в подкаталоге, соответствующем шаблону, не должен игнорироваться.
Ответ 2
Похоже, что у вас уже есть файлы под маркой vendor/*. .gitignore
игнорирует только не проверенные файлы. См. Также первый абзац в man gitignore
.