必须提交go.mod、go.sum和所有.go源码文件;必须忽略bin/、pkg/、vendor/(未启用时)、.out、.exe、.vscode/、.idea/等编译产物、缓存及ide配置文件。

Go 项目用 Git 管理时,go.mod 和 go.sum 必须提交,其余生成物和缓存一律忽略——这是最简、最稳的起点。
哪些文件必须进 Git?只留三个核心
Go Modules 已成事实标准,以下三类文件是 Git 仓库的“契约性内容”,缺一不可:
-
go.mod:声明模块路径、Go 版本、依赖版本(含 indirect 标记) -
go.sum:记录每个依赖的校验和,防止篡改或下载污染 - 所有
.go源码文件(含main.go、测试文件*_test.go)
注意:go mod tidy 后自动更新这两者,别手动编辑 go.sum;若依赖被删但 go.sum 残留,运行 go mod vendor + go mod tidy -v 可辅助清理(但通常直接提交即可)。
哪些目录/文件必须加到 .gitignore?避开常见污染点
以下条目应无条件写入项目根目录的 .gitignore,否则极易引入本地构建产物或 IDE 缓存:
Go语言(Golang)1.26.0版本提供 Go 官方 Windows amd64 MSI 安装包下载入口,版本号 1.26.0,可用于旧项目维护、兼容性测试和指定版本开发环境配置。
-
/bin/和/obj/:Go 默认输出目录(go build -o bin/app时产生) -
/pkg/:go install生成的归档包,与 GOPATH 下的pkg/冲突 -
/vendor/:除非团队明确要求锁定全部依赖树(已不推荐),否则禁用 vendor 模式,go mod vendor的输出不提交 -
**/*.out、**/*.exe、**/go-build-*:临时编译产物,Windows/macOS/Linux 各有习惯后缀 -
.vscode/、.idea/、.DS_Store:编辑器/系统私有配置,不跨人共享 -
/go/pkg/mod/和/go/cache/:这是 GOPATH 下的全局缓存,绝对不能出现在项目内——它们属于开发者本地环境,不是项目代码
错误示例:echo "/go/pkg/mod" >> .gitignore 是错的——这个路径不该出现在项目里,它本就不该被创建在项目目录下。
go env 配置要不要进 Git?答案是否定的
go env 输出的是本地环境变量(GOROOT、GOPATH、GOPROXY 等),它们:
- 因人而异(不同机器路径不同)
- 因网络而异(
GOPROXY在国内用https://goproxy.cn,海外可能直连) - 不应硬编码进项目配置
正确做法是:在个人 shell 配置(如 ~/.zshrc)中设置 GOPROXY 和 GO111MODULE=on;项目 CI/CD 流水线中显式传入 GOPROXY 环境变量。Git 仓库里从不存放 go env 导出的任何值。
团队协作时最容易被忽略的一件事
很多人忘了检查 go version 是否统一。Go 1.21 和 Go 1.23 对泛型约束、io 包行为已有细微差异,仅靠 go.mod 里的 go 1.21 声明不够——CI 脚本必须显式指定 setup-go@v4 或 actions/setup-go 的版本,开发机也建议用 asdf 或 gvm 锁定小版本(如 1.23.5 而非 1.23)。否则 go run 在 A 机器能过,B 机器报错 cannot use ~T as T 就很真实。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










