github/gitignore · Go.gitignore
Go .gitignore テンプレート解説
Go.gitignore がバイナリ、テストバイナリ、カバレッジプロファイル、go.work を無視する理由と、拡張子のない実行ファイルを別途防ぐ必要がある理由を説明します。
Go.gitignore はビルド結果のバイナリ、テスト・カバレッジの成果物、そしてローカルのワークスペースファイルを扱う。Go は依存関係をモジュールキャッシュ($GOPATH/pkg/mod)に取得するため、Node の node_modules のような巨大なフォルダーがリポジトリ内にできず、テンプレートも短い。
go.mod と go.sum は無視の対象ではない。この 2 つのファイルはモジュールの依存関係とチェックサムを記録するので、必ずコミットする。
ルール別の解説
| パターン | 何を、なぜ無視するか |
|---|---|
*.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