我正在开发一个 Laravel 项目。
我已从 GitLab 存储库复制了所有文件,包括 composer.json 和 composer.lock 文件。
然后我运行以下命令来安装所有包及其依赖项:
composer install
现在所有软件包都已安装,并且我的项目在本地正常运行。
但是当我想将新更改推送到远程存储库时,我发现虽然本地和服务器上的
composer.json
相同,但 composer.lock
文件不同。
下图显示了这些差异的一小部分:
现在我担心如果我把改动放在生产版本上,整个项目会出现问题。
我的问题是,首先,composer.lock文件存在差异的原因是什么?这种差异会导致问题吗?
install
命令不会修改现有的锁定文件(如果它是最新的)。
它读取你的锁文件。如果您的锁定文件与您最初从存储库中获得的锁定文件不同,则意味着您执行了一些其他操作(例如
update
或 require
ing 某些其他包...在这种情况下,锁定文件现在有所不同是有意义的,因为您的依赖项已更改)。
在三种情况下,锁定文件将与您从存储库中获取的内容不同:
update
require
d 或remove
d 了一个包裹。install
:这与运行update
相同,因为composer无法确定依赖项的锁定状态,所以它只需要从头开始创建一个新的锁定文件,获取最新的依赖关系。如果您无意中修改了锁定文件并且不想将不同的锁定文件推送到上游,只需将对
composer.*
文件的更改恢复到从存储库获得的最新已知良好提交即可。