编写器-未限制的更改(symfony 2.1)

编写器-未限制的更改(symfony 2.1),symfony,symfony-2.1,composer-php,Symfony,Symfony 2.1,Composer Php,我正在将symfony 2.1与composer一起使用,我正在尝试运行composer update 然而,我不断得到“有未提交的更改”,我不记得更改了vendors目录中的任何文件,它几乎提供了每个包 我尝试了composer安装来恢复任何更改,但似乎没有效果。如果我删除锁文件并尝试安装,我会收到错误消息,如“symfony 2.1需要symfony 2.1->symfony 2.1可满足”。这根本没有道理 如果我删除供应商中的内容,我会收到相同的错误消息,并且不会安装任何内容 我所做的一切

我正在将symfony 2.1与composer一起使用,我正在尝试运行composer update

然而,我不断得到“有未提交的更改”,我不记得更改了vendors目录中的任何文件,它几乎提供了每个包

我尝试了composer安装来恢复任何更改,但似乎没有效果。如果我删除锁文件并尝试安装,我会收到错误消息,如“symfony 2.1需要symfony 2.1->symfony 2.1可满足”。这根本没有道理

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


我所做的一切似乎都不管用。是否有一种方法可以使用“强制”进行更新,而不管“未提交的更改”您可以使用
编写器状态-v
。下面介绍如何使用此命令检测
vendor/
中的文件更改,以及如何修复它

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

➜  SymfonyApp git:(master) ✗ composer status
No local changes
然后,我们更改一个供应商文件

➜  SymfonyApp git:(master) ✗ echo "modification" >> vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php
然后,我们要求composer告诉我们修改过的供应商文件(请注意-v选项,以查看修改过的文件)

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

➜  SymfonyApp git:(master) ✗ cd /Users/adrienbrault/Developer/SymfonyApp/vendor/symfony/symfony
➜  symfony  git checkout .
➜  symfony  cd -
~/Developer/SymfonyApp
最后,我们检查文件是否不再被composer视为已修改

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

更新:composer现在应该帮助您处理此问题,因为这影响了在一台服务器上共享依赖关系的各种项目,例如,一位供应商作者会要求我在提交错误并提交其回购之前测试快速更改,我运行此命令以全局设置放弃更改

php composer.phar config -g  discard-changes 1

您还可以在composer.json文件的config参数中将
放弃更改设置为
true
,请参阅


非常感谢:)工作顺利。然而,在我发布另一个SO帖子之前。您以前是否遇到过这样的问题:sensio/framework额外捆绑包dev master需要symfony/framework捆绑包2.2.*->未找到匹配的软件包。再次感谢更新:不要在composer中使用dev master。从symfony 2.1.1版中获取新的composer.json,如果git中忽略了供应商文件夹怎么办?
php composer.phar config -g  discard-changes 1
{
  "name": "test",
  "description": "Demonstrating concepts",
...
  "config": {
    "process-timeout": 1800,
    "discard-changes" : true
  },
...
}