Gitの.gitignoreと.gitattributesの使い分けと設定方法
1. .gitignoreと.gitattributesの役割の違い
Gitには、ファイルの扱いを制御する2つの重要な設定ファイルがあります:
.gitignoreの役割
- バージョン管理から除外するファイルやディレクトリを指定
- 環境固有のファイルや一時ファイルを除外
- 機密情報を含むファイルを保護
- ビルド成果物やキャッシュファイルを除外
.gitattributesの役割
- 改行コードの自動変換設定
- ファイルタイプごとの属性設定
- マージ戦略の指定
- テキスト/バイナリファイルの区別
2. .gitignoreの設定例
# 仮想環境 venv/ env/ .venv/ .env/ ENV/ # Python __pycache__/ *.py[cod] *$py.class *.so .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg # IDE .idea/ .vscode/ *.swp *.swo
3. .gitattributesの設定例
# デフォルトの設定 * text=auto # テキストファイル(LFを使用) *.py text eol=lf *.html text eol=lf *.css text eol=lf *.js text eol=lf *.json text eol=lf *.md text eol=lf *.txt text eol=lf *.yml text eol=lf *.yaml text eol=lf *.xml text eol=lf *.sql text eol=lf *.sh text eol=lf # Windowsバッチファイル(CRLFを使用) *.bat text eol=crlf *.cmd text eol=crlf # バイナリファイル(改行コードの変換を無効化) *.png binary *.jpg binary *.jpeg binary *.gif binary *.ico binary *.pdf binary *.zip binary *.tar binary *.gz binary *.rar binary *.7z binary *.exe binary *.dll binary *.so binary *.dylib binary *.class binary *.jar binary *.war binary *.ear binary *.swf binary *.flv binary *.mov binary *.mp4 binary *.mp3 binary *.wav binary *.ogg binary *.woff binary *.woff2 binary *.ttf binary *.eot binary *.otf binary *.svg binary *.psd binary *.ai binary *.eps binary *.doc binary *.docx binary *.xls binary *.xlsx binary *.ppt binary *.pptx binary *.odt binary *.ods binary *.odp binary *.db binary *.sqlite binary *.sqlite3 binary *.db-journal binary *.sublime-workspace binary *.sublime-project binary *.DS_Store binary *.pem binary *.key binary *.crt binary *.cer binary *.p12 binary *.pfx binary
4. 設定のポイント
.gitignoreの設定ポイント
- プロジェクト固有の一時ファイルやキャッシュを除外
- 環境固有の設定ファイルを除外
- ビルド成果物や依存関係のディレクトリを除外
- 機密情報を含む可能性のあるファイルを除外
.gitattributesの設定ポイント
- クロスプラットフォーム開発での改行コードの一貫性を保つ
- ファイルタイプごとに適切な改行コードを設定
- バイナリファイルの改行コード変換を無効化
- Windows固有のファイルはCRLFを使用
5. ベストプラクティス
- プロジェクト開始時に両方のファイルを設定する
- チーム内で設定を統一する
- 定期的に設定を見直し、必要に応じて調整する
- 新しいファイルタイプが追加されたら、適切な設定を追加する
参考文献
- Gitignore Documentation - Git公式ドキュメント
- Gitattributes Documentation - Git公式ドキュメント