github/gitignore · Go.gitignore
Template .gitignore do Go explicado
Explica por que o Go.gitignore ignora binários, binários de teste, perfis de cobertura e go.work, e por que é preciso bloquear à parte os executáveis sem extensão.
O Go.gitignore trata dos binários resultantes do build, dos artefatos de teste e cobertura e dos arquivos de workspace local. O Go baixa as dependências no cache de módulos ($GOPATH/pkg/mod), por isso não surge dentro do repositório uma pasta enorme como o node_modules do Node, e o template também é curto.
go.mod e go.sum não são ignorados. Esses dois arquivos registram as dependências e os checksums do módulo, então devem sempre ser commitados.
Explicação regra por regra
| Padrão | O que ignora e por quê |
|---|---|
*.exe*.exe~*.dll*.so*.dylib | Binários e bibliotecasSão os resultados do go build e as bibliotecas compartilhadas criadas com cgo. São compilados separadamente para cada plataforma, então são distribuídos como artefatos de release, não pelo repositório. |
*.test | Binários de testeSão os executáveis de teste criados com go test -c. Recebem .test depois do nome do pacote. |
*.outcoverage.**.coverprofileprofile.cov | Cobertura e perfisSão resultados gerados por comandos como go test -coverprofile=coverage.out. São medições que mudam a cada execução. |
go.workgo.work.sum | WorkspaceSão arquivos usados para desenvolver vários módulos juntos localmente e apontam para caminhos do seu disco. A documentação de go help work também explica que, em geral, não se recomenda colocar o go.work no controle de versão. |
.env | Variáveis de ambienteÉ o arquivo com a configuração local e os valores secretos. O arquivo de exemplo é commitado com outro nome (por exemplo, .env.example). |
Cuidados na prática
- No Linux e no macOS,
go buildcria um executável sem extensão (com o nome do módulo). O template não o bloqueia, então adicione você mesmo uma regra como/myappou/bin/. vendor/não é ignorado. Há equipes que colocam as dependências no repositório comgo mod vendor, então decida conforme a política da equipe.*.outignora todos os arquivos cujo nome termina em.out, então, se você usa essa extensão em arquivos de valores esperados de testes, crie uma exceção como!testdata/**/*.out.- Se você usa o GoLand, selecione também o template JetBrains.
Template original
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/
Origem dos templates: github/gitignore/Go.gitignore @356fd7b (2026-09-11) · CC0-1.0