Go (Golang) の .gitignore 設定

Go プロジェクト向けのシンプルで効果的な .gitignore。コンパイル済みバイナリ、vendor ディレクトリの判断、テスト出力、Go 固有のビルドアーティファクトを網羅します。

Language

詳細な説明

Go プロジェクトは、バイトコードキャッシュや仮想環境を必要としないため、ほとんどの言語よりもシンプルな .gitignore になる傾向があります。ただし、理解すべき重要なパターンはいくつかあります。

Go の必須無視パターン:

# Compiled binaries
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary and output
*.test
*.out
coverage.html
coverage.txt

# Build output
/bin/
/dist/

# Go workspace
go.work.sum

# Dependency directory
vendor/

コンパイル済みバイナリ:

Go はネイティブマシンコードにコンパイルされます — node_modules__pycache__ に相当するものはありません。出力は単一のバイナリファイルです。プロジェクト名が myapp の場合、go build を実行すると myapp(Windows では myapp.exe)バイナリが生成されます。明示的な名前で無視するか、ビルド出力を bin/ ディレクトリに配置してください。

vendor/ ディレクトリの判断:

Go modules(go.mod + go.sum)は、旧来の GOPATH およびベンダリングアプローチに取って代わりました。現在は2つの正当な選択肢があります:

  1. vendor/ を無視する(現代のデフォルト) — 依存関係は $GOPATH/pkg/mod/ にキャッシュされ、go mod download でダウンロードされます。go.sum ファイルが整合性を保証します。よりクリーンで、ほとんどのプロジェクトに推奨されます。
  2. vendor/ をコミットするエアギャップ環境やモジュールがインターネットから削除された場合でもビルドを保証するために、ベンダリングを要求する組織もあります。ベンダリングする場合は vendor/.gitignore に追加しないでください。

テストアーティファクト:

  • *.testgo test -c で作成されるコンパイル済みテストバイナリ。
  • *.outgo test -cpuprofilego tool pprof からの CPU およびメモリプロファイリング出力。
  • coverage.htmlgo tool cover からの HTML カバレッジレポート。

必ずコミットすべきもの:

  • go.mod — モジュール定義と直接依存関係の宣言。
  • go.sum — すべての依存関係(直接的および推移的)の暗号学的チェックサム。これが lockfile です。

Pro tip: Go のビルドは設計上、再現性が保証されています。go.modgo.sum がコミットされていれば、誰でもビルドを正確に再現できます。.gitignore は主にコンパイル済みバイナリとテスト出力をリポジトリから除外するためのものです。

ユースケース

モノレポに12のサービスを持つ Go マイクロサービスチームが、バイナリの扱いと依存関係のベンダリング判断について一貫した .gitignore 戦略を必要としています。

試してみる — .gitignore Generator

フルツールを開く