8

我正在将 symfony 2.1 与作曲家一起使用,我正在尝试运行作曲家更新

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

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

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

我所做的一切似乎都不起作用。不管“未提交的更改”如何,有没有办法用“强制”进行更新

4

3 回答 3

16

您可以使用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

更新:作曲家现在应该帮助你处理这个

于 2012-09-13T09:12:58.633 回答
9

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

{
  "name": "test",
  "description": "Demonstrating concepts",
...
  "config": {
    "process-timeout": 1800,
    "discard-changes" : true
  },
...
}
于 2016-07-28T10:55:29.530 回答
3

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

php composer.phar config -g  discard-changes 1
于 2016-03-28T07:18:48.180 回答