为什么git在供应商目录中查找?

时间:2013-09-11 18:45:21

标签: ruby git gitignore

我的.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

但没有任何改变。

2 个答案:

答案 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中的第一段。