【问题标题】:.gitignore doesn't work properly on Symfony 3 after composer update作曲家更新后,.gitignore 在 Symfony 3 上无法正常工作
【发布时间】:2017-09-06 11:10:10
【问题描述】:

我有两台电脑:一台laptop 和一台desktop computer
我用台式机在 Symfony 3 项目上工作了两周,我在 parameters.yml.dist 上定义了一些新参数

今天,我需要使用我的笔记本电脑,所以我从我的原始分支中拉取了一个,然后我执行了以下命令来更新我的项目:

php composer.phar update

此命令成功更新了我的项目(参数和供应商目录)。有了这个,我现在可以运行我的项目了。

问题是现在当我运行时:

git status

大量修改过的文件出现在vendor 目录中。还有composer.lockfile 出现,我认为这是正确的,但不是供应商文件。

我的.gitignore包含以下行: vendor/*

我做错了什么?我该如何解决?

【问题讨论】:

    标签: php git symfony composer-php


    【解决方案1】:

    问题可能是双重的。

    您可能在将文件添加到 gitignore 之前已从供应商目录签入文件,或者您可能不小心添加了忽略 gitignore 的 --force 标志。

    另一个大问题是您运行了composer update,这不仅会在您的composer.lock 中安装依赖项,还会实际更新它们,这意味着您可能会获得与之前开发的版本不同的版本。下次您可能应该运行composer install(即使在您已经安装了供应商的系统上)。这将像宣传的那样安装 composer.lock 中定义的所有依赖项。每当您签出该文件的较新版本时,安装命令都会自动将您的本地供应商更新为那里定义的版本。这可确保您始终使用相同的依赖版本。

    如果您想更新您的依赖项,您可能需要使用composer update <dependency-name> 来一一更新,这将再次更新您应该签入 git 的 composer.lock。

    在您的情况下,您可能希望删除供应商文件夹,但请确保保留您的 composer.lock。现在您可以提交此更改以确保删除所有签入的文件 vendor/.之后,您的 .gitignore 应该会再次运行,并且运行 composer install 应该重新安装 composer.lock 中定义的所有内容,并且在运行 git status 时您应该不会在工作目录中看到任何更改。如果有你可能需要调整你的 .gitignore,例如试试/vendor 而不是vendor/*

    【讨论】:

    • 谢谢,下次我会使用composer install。现在,我从 GIT 恢复了以前的 composer.lock。我删除了我的供应商文件夹,然后运行composer install。似乎还可以。唯一的问题是输出中的警告:Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies.还有什么方法可以恢复 composer.json 文件?
    • 如果你刚刚恢复它,你可以做一个简单的技巧来解决这个问题:composer update --lock。这只会更新锁定文件中的哈希,但不会更新依赖项。这通常对我有用。
    • 如果您想更深入地了解如何与作曲家合作,您可能想观看:knpuniversity.com/screencast/composer(免责声明:我还没有看过,但从包含的主题列表中听起来有趣)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2019-08-10
    相关资源
    最近更新 更多