33

我有带有以下代码的 .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

但没有任何改变。

4

2 回答 2

81

您的供应商目录已签入到 repo。要删除它,请转到您的 git repo root 并运行:

git rm -r --cached vendor

这将递归地(由于-r标记)从您的 git 存储库中删除供应商。该--cached标志将保持供应商目录的本地副本完好无损。请注意,如果有其他开发人员在使用 repo,他们的vendor目录副本将被删除,他们将需要bundle install再次删除。

在 git 中取消跟踪目录后,您可以使用以下命令提交更改:

git commit -m "untrack vendor directory"

此后,.gitignore下次会很高兴地忽略供应商目录中的任何更改。

此外,您不需要.gitignore以 . 开头的条目//当您要确保仅忽略根目录中的文件/文件夹,并且不应忽略与模式匹配的子目录中的任何文件时,请使用。

于 2013-09-11T20:52:08.110 回答
4

看起来您已经在 vendor/* 下签入.gitignore了文件。仅忽略未跟踪的文件。另见 中的第一段man gitignore

于 2013-09-11T19:37:02.833 回答