Delphi 11中Git提交正常但Push报Invalid URL错误的原因及解决
Delphi 11 Git推送报错:Invalid URL 处理方案
问题现象
- 代码提交操作正常完成,但通过IDE菜单路径
git->Push->From Repository Root执行推送时,弹出错误提示:Invalid URL: "git@bitbucket.org:xxxxxxx/projectname.git" - 该SSH格式的仓库URL本身有效,且通过终端执行
git push命令可正常完成推送 - 错误详情栈(已翻译):
[7B892869]{rtl280.bpl } System.Net.URLClient.TURI.ComposeURI(第1088行,"System.Net.URLClient.pas" + 6) + $F [7B892053]{rtl280.bpl } System.Net.URLClient..{System.Generics.Collections}TDictionary<System.string,System.Net.URLClient.TURLStream.TSyncReqExecutor>(第622行,"System.Net.URLClient.pas" + 0) + $AC27 [26A3FA9A]{gitide280.bpl} GitClient.TGitClient.EnsureUserAuthentication(第1544行,"GitClient.pas" + 7) + $6 [26A406E9]{gitide280.bpl} GitClient.TGitClient.Push(第1731行,"GitClient.pas" + 3) + $7 [26A89E16]{gitide280.bpl} GitIDEPush.DoPush(第139行,"GitIDEPush.pas" + 7) + $E [26A89CB3]{gitide280.bpl} GitIDEPush.TBasePushGitMenu.Execute(第122行,"GitIDEPush.pas" + 22) + $E [7A927A96]{coreide280.bpl} ContainerIntf.TProjectManagerMenuItem.Click(第1110行,"ContainerIntf.pas" + 18) + $22 [7A555C5B]{vcl280.bpl } Vcl.Menus.TMenu.DispatchCommand(第3576行,"Vcl.Menus.pas" + 5) + $2 [7A556ED6]{vcl280.bpl } Vcl.Menus.TPopupList.WndProc(第4749行,"Vcl.Menus.pas" + 4) + $E [7B5A0AB4]{rtl280.bpl } System.TMonitor.CheckOwningThread(第19889行,"System.pas" + 2) + $0 [7B5A0DDA]{rtl280.bpl } System.TMonitor.Exit(第20079行,"System.pas" + 1) + $2 [7B5A0E36]{rtl280.bpl } System.TMonitor.Exit(第20101行,"System.pas" + 2) + $7 [7A40821D]{vcl280.bpl } Vcl.Graphics.FreeMemoryContexts(第7308行,"Vcl.Graphics.pas" + 12) + $8 [7A42C700]{vcl280.bpl } Vcl.Controls.TWinControl.MainWndProc(第10321行,"Vcl.Controls.pas" + 3) + $6 [7A556E25]{vcl280.bpl } Vcl.Menus.TPopupList.MainWndProc(第4724行,"Vcl.Menus.pas" + 2) + $5 [7B6B5C1C]{rtl280.bpl } System.Classes.StdWndProc(第18517行,"System.Classes.pas" + 8) + $0 [7A575263]{vcl280.bpl } Vcl.Forms.TApplication.ProcessMessage(第11488行,"Vcl.Forms.pas" + 23) + $1 [7A5752A6]{vcl280.bpl } Vcl.Forms.TApplication.HandleMessage(第11518行,"Vcl.Forms.pas" + 1) + $4 [7A5755E5]{vcl280.bpl } Vcl.Forms.TApplication.Run(第11657行,"Vcl.Forms.pas" + 27) + $3 [006D80A2]{bds.exe } bds.bds(第227行,"" + 16) + $2
解决方法
- 替换SSH URL为HTTPS格式
将远程仓库URL修改为HTTPS格式:https://bitbucket.org/xxxxxxx/projectname.git,可通过以下两种方式操作:- 终端执行命令:
git remote set-url origin https://bitbucket.org/xxxxxxx/projectname.git,之后回到IDE刷新Git配置再尝试推送 - 在Delphi IDE的Git设置界面直接修改远程仓库地址
- 终端执行命令:
- 统一IDE与终端的Git环境
检查IDE设置中Git客户端的路径,确保指向你终端使用的Git版本(而非IDE自带的可能存在解析bug的版本),路径设置通常在Tools->Options->Version Control->Git中 - 升级Delphi 11到最新补丁版本
此报错属于IDE自带Git组件对SSH URL解析的兼容性bug,官方后续补丁已修复类似问题,升级到最新版本可解决该问题
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

