
2026/09/05 22:19
.gitignore をデフォルトで全ファイルに適用する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
このテキストは、標準的な Git ワークフローを逆転させ、デフォルトですべてのファイルを無視し、追跡する必要があるものだけを明示的にリストする方法を提唱しています。この手法は、ローカルの不要なファイルを誤ってコミットすることを防止すると同時に、巨大な無視リストが複雑なプロジェクトの管理において場合によっては容易に思えることを認めています。シンプルな Go プロジェクトの場合、この構成ではリポジトリに
.gitignore ファイル自体(!.gitignore)、ソースコード(*.go)、依存関係ファイル(go.mod、go.sum)および他の指定された例外のみを含めることを可能にします。現代の開発環境では、エージェントドキュメント、IDE 設定、環境変数などの重要なローカルアバターが蓄積しており、これらをコミットすることは履歴を不必要に肥大化させます。このアプローチは、.DS_Store のような意図しないファイルを保存するのを防ぎ、リポジトリが明確なソースコードにのみ焦点を当てた清潔な状態を保つのに役立つことを強調しています。この転換を支持する証拠として、人気のあるリポジトリ(typescript-go)からの 207 行の無視リストの引用が含まれており、伝統的なセットアップで潜在的な乱雑さの規模を例示しています。読者には、特定のパスが無視されているかどうかを確認するために特定のコマンドを実行し、Git ユーザーエクスペリエンスを向上させるための lazygit ツールを使用することを推奨しています。この投稿に関する議論は Hacker News で利用可能です。本文
全てのファイルを無視し、許可リスト制の .gitignore
で開発環境をシンプルにする
.gitignore多くの開発者が直面する悩み、「不要なファイルを誤ってコミットしてしまった」という後悔を逆手に取り、**「デフォルトではすべてを無視し、特定のファイルだけを追跡」**という新しいアプローチを紹介します。
従来の問題点
プロジェクトを進展させながら気づくことへの苦悩です。
- 不要なファイルをコミットしてしまう
ファイル.DS_Store
フォルダnode_modules- IDE の設定ファイル
- リポジトリに含めたくない雑多なファイル(例:
)CLAUDE.md
- 環境変数を誤ってコミットするケース
- 対処の限界
に追加して履歴から削除する作業は済ませられるが、.gitignore- **「誰も気づいていないことを祈らざるを得ない」**という不安が残る
「許可リスト制」の考え方
従来の「例外を定義する」方式ではなく、「基本ルールを再定義」します。
- 基本方針:デフォルトでは全てのファイルを無視する
- 追跡対象:以下のファイルだけ、明示的に許可する
(この設定ファイルそのもの).gitignore
(Go ソースコード)*.go
(モジュール定義)go.mod
(依存関係情報)go.sum- 他にも追跡したい任意のファイルをリストアップ
この設定を採用すれば、Git は許可されたファイルのみを追跡します。意図しないローカルのファイルによるコミット事故は二度と起きません。
この手法について検討すべき点
全てのプロジェクトに最適なわけではありませんが、検討するべき代替案の一つです。
- 現代の開発環境の変化
- プロジェクト固有で局所的に生成される不要なファイルが多岐にわたる
- 各種エージェント関連のドキュメント
- サブフォルダなど
- **「まずはすべてを無視しておけば楽」**という思考は自然な流れです
- プロジェクト固有で局所的に生成される不要なファイルが多岐にわたる
実装例:TypeScript Go プロジェクト
typescript-go プロジェクトで使用されている、207 行にも及ぶ .gitignore ファイルの構成例です。
# --- 基本ルール:すべてを無視する --- /* # --- 許可リスト:追跡対象 --- .gitignore # このファイル自身 *.go # Go ソースコード go.mod # モジュール定義 go.sum # 依存関係情報 # ここに、他にも追跡したいファイルを明記します # your-important-file.txt
運用上のアドバイス
Git の無視状態の確認方法
パスが実際に Git に無視されているか確認したい場合は、以下のコマンドを実行してください。
git ls-files --stage <ファイル名>
期待していたファイルが追跡されていない場合などの頭を抱えるような状況を防ぐために大いに役立ちます。
おすすめツール:LazyGit
Git の TUI ツールとして、現在最も優れた LazyGit を試していただきたいものです。