Composer更新已删除我的更改

Sin*_*ina 2 php git recovery laravel composer-php

我正在使用Laravel应用程序,我运行该命令composer update以安装我添加的新软件包.

我之前更改/添加了供应商目录中的一些文件,并删除了添加的文件.我还没有提交到我的供应商目录(另一个错误!),因此我无法通过git获取它们.

现在我的问题是:

  1. composer update跑的时候会发生什么?

  2. 为什么删除的文件不在回收站中,它们发生了什么?永久删除?

同样,我很清楚我可以回滚我的作曲家更新,但这不会让我回复我修改的文件,它宁愿安装以前版本的原始文件.

如果有任何其他方式(甚至文件恢复)可以帮助我恢复这些更改,请告诉我.

BVe*_*rov 9

  1. composer update查找已安装的依赖项的新版本,如果找到,则安装新版本而不是旧版本.它不关心是否对安装的依赖项进行了任何更改,因为它只查看存储在composer.lock文件中的描述.
  2. 由于上述原因,文件很可能无法使用composer恢复.您可以尝试在缓存目录中查找丢失的文件.composer/cache,但我认为丢失的文件没有任何理由存在.是的,它们可能被永久删除,如果这些是关键的,您应该寻找文件恢复程序.

出于上述原因,您绝对不应存储对依赖项所做的任何修改.

此外,您可能不应该添加vendor/到您的存储库,因为composer.lock无论如何都会跟踪所有依赖项,并且更改内部的依赖项vendor(使它们硬编码)是针对composer工作流的.

编辑:

正如KévinDunglas所建议的那样,您还可以尝试查找IDE本地历史记录中丢失的更改(例如,在PHPStorm中).

  • 这实际上节省了我16个小时的工作量.与供应商无关的实际项目文件已恢复为上次提交.上帝保存PHPSTORMS当地历史. (4认同)
  • 通常,不必对`vendor`目录进行更改的好方法是使用继承来覆盖受影响的类并更改框架中的绑定.特别是对于Laravel,这通常很有效. (3认同)