运行flutter upgrade命令时出现错误。
Upgrading Flutter from E:\flutter...
Updating f37c235c3..5391447fa
error: Your local changes to the following files would be overwritten by merge:
packages/flutter_tools/gradle/flutter.gradle
Please commit your changes or stash them before you merge.
Aborting
答案 0 :(得分:4)
这是因为您对该文件进行了一些更改:
<FlutterRoot>/packages/flutter_tools/gradle/flutter.gradle
这是flutter的根目录,其中还有bin
文件夹。
也许您已经进行了这样的修改,以便将一些gradle规则传播到所有flutter项目中,我不知道,您应该知道;-]
当我们尝试对颤动进行更新或更改颤动通道时,当颤动根路径对我们进行了一些修改(无论是因为我们需要它还是出于意料之外)时,都会收到错误消息。
在这种情况下,我们有两种选择路径:
转到<FlutterRoot>
和
git checkout .
(或stash
放弃更改)(如果您现在是指的话)。放弃更改是一项破坏性的操作,因此您应该备份或至少知道是否需要这些有用的修改,以便您可以在之后重新添加它们并更新或更改频道
今天,在flutter github官方repo Wiki中也有一个部分可以解决这种情况:
在这里您可以找到此解决方案
git clean -xfd
git stash save --keep-index
git stash drop
git pull
flutter doctor
first 命令删除所有未跟踪的回购文件(例如,如果您添加了自己的文件),并且 third 行删除了先前的存储。
因此,这是一个具有破坏性的命令,例如git checkout .
,但它也会清除所有不属于标准flutter存储库的文件。
如果您不打算对Flutter根项目进行修改,则可以选择git checkout .
或上面的命令。
但是,如果您有需要保留的修改,则可以选择以下解决方案或隐藏此修改,但不要删除此隐藏,否则您将丢失它。
git add . && git commit -m "my changes whatever"
提交更改,看看flutter update
是否可以将扑朔迷离的正式更改与您的更改合并。如果您不记得<FlutterRoot>
在哪里,可以输入:
which flutter
where flutter
这应该打印<FlutterRoot>/bin/flutter
。