Buffalo 安装推荐用 go install github.com/gobuffalo/cli/cmd/buffalo@latest,它通过 Go 模块代理下载编译,不依赖 Git clone 或分支 checkout;仅当需构建未发布分支(如 main)时,才需手动 git clone + checkout + go build。

buffalo install 命令不走 Git clone,而是 go install
Buffalo 的安装方式和传统 Git 拉分支再构建完全不同。go install 直接从 Go 模块代理(如 proxy.golang.org)下载编译好的模块,不是克隆源码仓库。你执行 go install github.com/gobuffalo/cli/cmd/buffalo@latest 时,Go 工具链根本不会触发 git clone,也不会 checkout 任何分支——它只解析模块版本(比如 v0.18.10),拉取对应 zip 包并编译二进制。
想用特定 Git 分支?必须手动 clone + build
如果你明确需要某个未发布、还在开发中的分支(例如 main 或 next),go install 的 @latest 或 @vX.Y.Z 都无法满足。这时才真正需要 Git 参与:
- 先
git clone https://github.com/gobuffalo/buffalo.git到本地目录 - 进入目录后,
git checkout main(或你要的分支名) - 确保已安装 Go 1.21+,然后运行
go build -o ~/bin/buffalo ./cmd/buffalo(路径可按需调整) - 确认
~/bin在$PATH中,否则buffalo命令不可用
注意:go build 会读取项目根目录的 go.mod,自动处理依赖,但不会自动安装到 $GOBIN——你得自己指定输出路径。
常见错误:误以为 buffalo version 显示分支名
运行 buffalo version 输出类似 v0.18.10 或 v0.18.10-1-gabcd123,后者末尾的 -gabcd123 是 Git commit hash 缩写,不是分支名。它只说明构建时工作区基于该 commit,但无法反推是哪个分支 checkout 来的。如果你没手动 git checkout 过,大概率就是 main 或 release tag 对应的 commit。
GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。
另外,直接 git clone 后不 checkout 就 go build,默认落在 main 分支(GitHub 仓库默认分支),但 Buffalo 项目近年已将默认分支从 master 改为 main,这点容易被忽略。
为什么官方不推荐 Git 方式安装?
Buffalo 的 CLI 是工具链,不是库;它的发布节奏和 Go 模块版本强绑定。Git 分支可能包含未测试的破坏性变更、缺失的生成文件(如 embedded assets)、或依赖未发布的内部模块。用 go install 能保证版本一致性,而手动 build 容易因本地环境差异(Go 版本、CGO_ENABLED、模块缓存)导致行为不一致。
真正需要分支构建的场景极少,基本只出现在你向 Buffalo 提 PR 后想本地验证修改,或者调试某个刚合入 main 但尚未打 tag 的功能。其他情况,老实用 @latest 或锁定具体语义化版本更稳妥。

















