flutter支持远端git依赖,类似这样
dependencies:
flutter:
sdk: flutter
flutter_boost:
git:
url: git@git.xxx.co:live/pub.git
path: plugins/flutter_boost当我用终端运行flutter pub get的时候(直接点击AS上面的Packages get效果一样),直接报错:
在IDE上运行Packages get会在Terminal终端提示下面错误:
在git bash终端提示下面错误:

刚开始以为是git环境变量没配置对,但是之前运行的好好的,并且用UninstallTool工具卸载干净了git,然后重新安装依然不行。
在Stack Overflow上搜到了跟我的场景很相似的帖子
地址: stackoverflow.com/questions/1…
This could be related to issue 4947
Run pub from Windows shell with git installed and available in
PATH:D:\Tools\dart\dart-sdk\bin\pub install Cannot install 'dartlib' from Git (git://github.com/kevmoo/dartlib.git). Please ensure Git is correctly installed. git --version git version 1.7.7.1.msysgit.0Seems, that this issue related to Issue 1705 as git is available as
git.cmd.Replacing "
git" to "git.cmd" atpub's sources (io.dartandgit_source.dart) fixespubfor my environment.
上面提示是需要修改dart的pub源码,因为源码里面有用到git.cmd命令,但是我windows下的git并没有该可执行文件存在。
最后去github.com/dart-lang/s… 仓库中找io.dart and git_source.dart两个文件,并不能找到,原因是master分支上已经把dart的pub工具打包成可执行文件了。
通过search in this repository 查找git.cmd关键字,终于在仓库的某个节点找到了io.dart文件引用git.cmd的地方

仔细查看该段代码实现,里面先去试着执行git,然后再执行git.cmd,理论上我本机git安装正确,就不会执行git.cmd命令的...
注意看红框中的代码实现,输出的result.stdout.length == 1 && regex.hasMatch(results.stdout[0]);这段代码的意思是执行命令输出的行数为1行,并且匹配git version字符。

难道我的git --version输出的不对吗?发现在windows下的cmd终端输入确实多了行Active code page: 65001
C:\Users\computerName>cmd /c git --version
Active code page: 65001
git version 2.23.0.windows.1好吧,感觉有眉目了,不禁想起之前有次手贱想把windows下的cmd终端编码格式改成utf-8,windows下cmd终端默认是gbk。
参考了www.cnblogs.com/yifengs/p/1… 这篇文章,并且在注册表里永久修改了编码格式
难怪会出现一个65001,它是utf-8的编码代码,gbk是936
好吧,删除注册表里的配置,并且重新将cmd改成gbk就好了...
看来Windows上的环境问题真的坑很多,不过遇到这种问题,需要好好思考到底是哪个环境出的问题,在Stack Overflow上找到那篇帖子让我改dart的pub工具源码的给了我很大启发,源码是不会改的,这辈子都不可能改dart 的源码的……
