必须先配置sftp连接,否则“upload to”菜单为空或报“no deployment configuration found”;需通过tools→deployment→configuration添加sftp,正确填写ssh配置、root path和mappings,并手动触发上传。

必须先配 SFTP 连接,否则“Upload to”菜单为空
GoLand 的上传功能不是开箱即用的。点击项目右键 → Deployment → Upload to xxx 时如果菜单为空,或弹出 No deployment configuration found,说明你漏掉了最基础的一步:SFTP 连接配置。
操作路径固定为:Tools → Deployment → Configuration,点左上角 +,选 SFTP。关键字段不能靠猜:
-
SSH configuration必须是能直接在终端里ssh user@host成功的字符串(例如dev@10.0.2.5),不能填 IP 或域名单独一项 -
Root path是远程服务器上的绝对路径(如/home/dev/myapp),不是~/myapp,也不是http://开头 - 测试连接失败时,优先检查授权方式是否匹配——服务器若只允许密码登录,就别选
Key pair;反之亦然
Mappings 配置错一个字符,上传就进错目录
映射(Mappings)决定本地文件“往远程哪个子路径下放”。很多人填了 Root path 就以为完事了,结果上传后发现文件全堆在 /home/dev/ 下,而不是 /home/dev/myapp/ 里。
正确做法是:
- 保持
Local path为项目根目录(通常自动填充) -
Deployment path填/—— 表示“本地根目录内容,直接铺到Root path指定的远程路径下” - 如果填了
/src,那本地main.go会传到远程/home/dev/myapp/src/main.go,而非预期的/home/dev/myapp/main.go
右键菜单里出现多个 Upload to xxx,是因为你配置了多个 deployment 目标。务必确认名称对应的是开发机(如 dev-server),不是 staging-server 或 prod-server。
自动上传 ≠ 自动构建,上传后仍需手动运行
GoLand 的 Upload 只做文件同步,不执行任何命令。即使你改了 main.go 并保存,上传后服务器上仍是旧二进制,go run 也不会自动触发。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
常见误操作和应对:
- 勾选了
Automatic upload (always),但没意识到它只传源码——你得自己 SSH 进去go build或systemctl restart myapp - 想让保存即生效?可以配 External Tool 调用
ssh dev@10.0.2.5 'cd /home/dev/myapp && go run main.go',但注意:前台进程随终端关闭而终止 - 真正接近“一键发布”的方案,其实是写
deploy.sh脚本:交叉编译 +scp+ssh执行 systemctl 控制,比 IDE 内置上传更可控
删本地文件不会删远程,覆盖风险藏得深
默认情况下,GoLand 上传是单向追加式同步:本地有、远程无 → 上传;本地删了、远程还有 → 留着。这在开发测试阶段容易埋雷。
比如你重构删除了 old_handler.go,但远程还留着,某次手抖执行 go run . 就可能加载到残留旧文件,报错却找不到源头。
若真需要双向清理:
- 进入
Tools → Deployment → Options - 勾选
Delete remote files when local are deleted - 但注意:该选项对已存在的远程冗余文件无效,仅作用于后续删除动作
真正的危险点不在配置多难,而在于你以为“上传=部署完成”,其实它连 go mod download 都不帮你跑。每次点 Upload to dev-server 前,多看一眼右键菜单里的目标名和你心里想的那个是否一致——这个动作比所有配置都重要。










