github/gitignore · Go.gitignore
Разбор шаблона .gitignore для Go
Почему Go.gitignore игнорирует бинарники, тестовые бинарники, профили покрытия и go.work, и почему исполняемые файлы без расширения нужно блокировать отдельно.
Go.gitignore охватывает бинарники — результаты сборки, артефакты тестов и покрытия, а также локальный файл рабочего пространства. Go загружает зависимости в кэш модулей ($GOPATH/pkg/mod), поэтому огромной папки вроде node_modules из Node внутри репозитория не появляется, и шаблон короткий.
go.mod и go.sum не игнорируются. Эти два файла фиксируют зависимости модуля и их контрольные суммы, поэтому их обязательно коммитят.
Разбор правил
| Шаблон | Что и почему игнорируется |
|---|---|
*.exe*.exe~*.dll*.so*.dylib | Бинарники и библиотекиРезультат go build и разделяемые библиотеки, созданные через cgo. Они собираются отдельно под каждую платформу, поэтому распространяются как артефакты релиза, а не через репозиторий. |
*.test | Тестовые бинарникиИсполняемые файлы тестов, созданные командой go test -c. К имени пакета добавляется .test. |
*.outcoverage.**.coverprofileprofile.cov | Покрытие и профилированиеРезультаты команд вроде go test -coverprofile=coverage.out. Это измерения, которые меняются при каждом запуске. |
go.workgo.work.sum | Рабочее пространствоФайл для локальной совместной разработки нескольких модулей; он указывает на пути на вашем диске. Документация go help work также поясняет, что добавлять go.work в систему контроля версий обычно не рекомендуется. |
.env | Переменные окруженияФайлы с локальными настройками и секретными значениями. Файл-пример коммитят под другим именем (например, .env.example). |
На что обратить внимание на практике
- В Linux и macOS
go buildсоздаёт исполняемый файл без расширения (с именем модуля). Шаблон его не блокирует, поэтому добавьте правило вручную, например/myappили/bin/. vendor/не игнорируется. Некоторые команды кладут зависимости в репозиторий черезgo mod vendor, поэтому решайте по принятой политике.*.outигнорирует все файлы, имя которых оканчивается на.out, поэтому если это расширение используется для файлов с ожидаемыми результатами тестов, добавьте исключение, например!testdata/**/*.out.- Если вы работаете в GoLand, выберите также шаблон JetBrains.
Исходный шаблон
Go.gitignore
# If you prefer the allow list template instead of the deny list, see community template:# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore## Binaries for programs and plugins*.exe*.exe~*.dll*.so*.dylib# Test binary, built with `go test -c`*.test# Code coverage profiles and other test artifacts*.outcoverage.**.coverprofileprofile.cov# Dependency directories (remove the comment below to include it)# vendor/# Go workspace filego.workgo.work.sum# env file.env# Editor/IDE# .idea/# .vscode/
Источник шаблонов: github/gitignore/Go.gitignore @356fd7b (2026-09-11) · CC0-1.0