【问题标题】:Composer - uncommited changes (symfony 2.1)Composer - 未提交的更改(symfony 2.1)
【发布时间】:2020-05-16 12:01:24
【问题描述】:

我正在使用带有 composer 的 symfony 2.1,我正在尝试运行 composer update

但是,我不断收到“有未提交的更改”,我不记得更改供应商目录中的任何文件,并且几乎每个包都包含它!

我尝试了 composer install 来恢复任何更改,但它似乎没有效果。如果我删除锁定文件并尝试安装,我会收到诸如“symfony 2.1 需要 symfony 2.1 -> symfony 2.1 可满足”之类的错误消息。这只是没有意义。

如果我删除供应商中的内容,我会收到相同的错误消息并且没有安装任何内容。

我所做的一切似乎都不起作用。不管“未提交的更改”

,有没有办法用 “force” 进行更新

【问题讨论】:

    标签: symfony symfony-2.1 composer-php


    【解决方案1】:

    您可以使用composer status -v。以下是如何使用此命令检测 vendor/ 中的文件更改以及如何修复它。

    首先,我们验证没有包被修改:

    ➜  SymfonyApp git:(master) ✗ composer status
    No local changes
    

    然后,我们更改供应商文件

    ➜  SymfonyApp git:(master) ✗ echo "modification" >> vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php
    

    然后我们要求作曲家告诉我们修改后的供应商文件(注意 -v 选项,以查看修改后的文件)

    ➜  SymfonyApp git:(master) ✗ composer status -v
    You have changes in the following dependencies:
    /Users/adrienbrault/Developer/SymfonyApp/vendor/symfony/symfony:
        M src/Symfony/Component/HttpKernel/Kernel.php
    

    然后我们重置供应商 git 存储库以将文件设置回其原始状态。

    ➜  SymfonyApp git:(master) ✗ cd /Users/adrienbrault/Developer/SymfonyApp/vendor/symfony/symfony
    ➜  symfony  git checkout .
    ➜  symfony  cd -
    ~/Developer/SymfonyApp
    

    最后,我们检查文件是否不再被作曲家修改。

    ➜  SymfonyApp git:(master) ✗ composer status -v
    No local changes
    

    更新:composer 现在应该可以帮助您处理这个问题

    【讨论】:

    • 非常感谢 :) 工作。但是,在我发布另一个 SO 帖子之前。你以前遇到过这个吗:sensio/framework-extra-bundle dev-master 需要 symfony/framework-bundle 2.2.* -> 找不到匹配的包。再次感谢
    • 更新:不要在作曲​​家中使用 dev-master。从 symfony 2.1.1 版中获取新的 composer.json
    • 如果供应商文件夹被 git 忽略了怎么办?
    【解决方案2】:

    您还可以在 composer.json 文件的配置参数中将discard-changes 设置为true,请参阅https://getcomposer.org/doc/06-config.md#discard-changes

    {
      "name": "test",
      "description": "Demonstrating concepts",
    ...
      "config": {
        "process-timeout": 1800,
        "discard-changes" : true
      },
    ...
    }
    

    【讨论】:

      【解决方案3】:

      因为这会影响到在一台服务器上共享依赖项的各种项目,例如供应商作者会要求我在提交错误并提交到他们的 repo 之前测试快速更改,所以我运行它来全局设置 discard-changestrue

      php composer.phar config -g  discard-changes 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-07
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        • 2012-09-26
        • 1970-01-01
        • 2021-01-29
        • 1970-01-01
        相关资源
        最近更新 更多