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

Man*_*olo 25 ruby git gitignore

我有这个代码的.gitignore文件:

/app/cache/*
/app/logs/*
/app/bootstrap*
/vendor/*
/web/bundles/
/app/config/parameters.yml
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

$ git status
Run Code Online (Sandbox Code Playgroud)

在任何情况下(在添加和提交之前和之后),我得到一个像这样的长文本输出:

    ...

    #   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

    ...
Run Code Online (Sandbox Code Playgroud)

供应商目录位于.gitignore文件中,因此我不知道发生了什么.我尝试过:

$ sudo git clean -dxf
Run Code Online (Sandbox Code Playgroud)

但没有变化.

mu *_*u 無 59

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

git rm -r --cached vendor
Run Code Online (Sandbox Code Playgroud)

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

一旦你在git中取消跟踪目录,就可以使用以下命令提交更改:

git commit -m "untrack vendor directory"
Run Code Online (Sandbox Code Playgroud)

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

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

  • 你没有_edit_在.gitignore中的条目以`/`开头,但请注意它可能导致意外的结果.前导斜杠与存储库的根相匹配.如果你不使用它,*将忽略名为`vendor`的每个*文件夹. (4认同)