我的.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
但没有任何改变。
答案 0 :(得分:50)
您的供应商目录已签入回购。要删除它,请转到您的git repo root并运行:
git rm -r --cached vendor
这将递归(由于-r
标志)从您的git仓库中删除供应商。 --cached
标志将保持供应商目录的本地副本。请注意,如果其他开发人员使用了repo,则会移除vendor
目录的副本,并且他们需要再次bundle install
。
在git中取消跟踪目录后,您可以使用以下命令提交更改:
git commit -m "untrack vendor directory"
此后,.gitignore
将很乐意忽略下次供应商目录中的任何更改。
此外,您.gitignore
中的参赛作品不需要以/
开头。如果要确保只忽略根目录中的文件/文件夹,并且不应忽略与该模式匹配的子目录中的任何文件,请使用/
。
答案 1 :(得分:1)
看起来您已经在vendor / *下签入了文件。.gitignore
仅忽略未跟踪的文件。另见man gitignore
中的第一段。