composer install --prefer-source 抛出错误
Posted
技术标签:
【中文标题】composer install --prefer-source 抛出错误【英文标题】:composer install --prefer-source throwing error 【发布时间】:2017-02-12 15:35:08 【问题描述】:当我运行composer install --prefer-source
或尝试更新这个特定的捆绑包(其他包运行良好)时,我收到此错误:
Failed to download some-bundle from source: Failed to execute git checkout 'xx' -- && git reset --hard 'xx' --
error: The following untracked working tree files would be overwritten by checkout:
...
[ list of all files in repo on a branch that interests me ]
...
Please move or remove them before you can switch branches.
Aborting
我假设我在捆绑存储库中搞砸了一些东西,但不知道是什么。
-
我克隆了全新的项目存储库
我尝试“composer install --prefer source”,但仍然出现该错误。
有趣的是——该错误仅发生在 MAC 上的 docker 上。在其他装有 linux 的电脑上它工作正常。
【问题讨论】:
什么版本的作曲家?其他人报告了同样的问题,作曲家的更新将它们整理出来。值得一试? “对于遇到此问题的其他人,请尝试 composer update --prefer-dist”。其他建议在 GIT Bash 而不是 CMD (windows) 中运行。 Composer 版本 1.2.1 2016-09-12 11:27:19。 --prefer-dist 不能按我的意愿工作 - 我不能直接从供应商发送更改。但我认为这只是 MAC 上的问题。 解决方案是永远永远在供应商文件夹内进行修改。这与作曲家、供应商文件夹和一般适当的开发实践的整个观点直接相反。 @Sammitch 这实际上不是真的,f.e.如果你想开发一个带有应用程序上下文的包,那么获取主干/分支并直接在供应商目录中开发它是一个有效的选择。因此,composer 会在安装/更新之前警告您有关更改。 【参考方案1】:您似乎已手动更新了此捆绑包的供应商目录中的源代码。
如果是这样,请尝试在更新包之前直接在供应商目录中提交/推送或重置它们。
如果不是,可能与这个问题有关:https://github.com/composer/composer/issues/2896
作者写道:
“这可以通过两种方式解决:
存储时,添加 --include-untracked 标志,该标志也会存储新添加的文件。
签出时,添加 --force 标志,它将覆盖文件而不是中止。"
如果没有任何帮助,您可以手动删除供应商目录以强制 composer 重新安装包。 编辑请同时查看https://getcomposer.org/doc/03-cli.md#clear-cache,可能composer已经将git仓库缓存在某处,无法更新。
【讨论】:
我已经编辑了我的问题。即使我从头开始,错误仍然存在。 @mmmm 也许作曲家在内部缓存了一些东西,我已经编辑了我的回复 我已经尝试清除缓存,但即使我开始克隆新的 repo 并在 docker 上安装供应商,我仍然收到错误。 @mmmm 在这种情况下,如果不了解环境,我认为我无法为您提供任何帮助。我可以建议您以详细模式--verbose (-v)
执行 composer 命令,并将结果放在您的问题中,并提供尽可能多的信息。似乎某些东西在 git repo 中被破坏了,或者是 composer 中的一般错误。
也许 docker 使用了全局作曲家缓存或供应商目录,因为另一个 docker 实例发生了更改,所以它无法修改文件,但这只是猜测以上是关于composer install --prefer-source 抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
用composer安装php代码(以安装phpmailer为例)
Composer 更换为国内镜像源(Packagist 镜像)