プログラミング
.gitignore すべてをデフォルトで無視する
.gitignore Everything by Default (packagemain.tech)
要約
この記事では、バージョン管理システムであるGitにおいて、デフォルトで全てのファイルを無視し、明示的に許可されたファイルのみを追跡するという逆転の発想の.gitignoreの使い方を提案しています。これにより、node_modulesやIDEの設定ファイル、環境変数などの意図しないファイルがリポジトリにコミットされるのを防ぐことができます。この手法は全てのプロジェクトに適しているわけではありませんが、ローカルに多くの不要なファイルが存在する現代の開発環境において、管理を簡素化する代替手段として検討する価値があるとしています。
全文翻訳
.gitignore すべてをデフォルトで無視する
.gitignoreファイルに関する逆の視点。
アレックス・プリュタウ
2026年9月5日
22シェア
皆さんも経験があると思いますが、プロジェクト作業中にコミットを繰り返し、突然、リポジトリに含めるべきではない.DS_Storeファイル、node_modules、IDEの設定ファイル、その他のジャンク(例: CLAUDE.md)をコミットしていたことに気づくことがあります。あるいは、もっと悪いことに、環境変数まで。そして、恥ずかしいクリーンアップ作業が始まります。これらのファイルを.gitignoreに追加し、リポジトリの履歴から削除し、誰も気づいていないことを願うのです。
もし、このアプローチを完全に逆転させたらどうなるでしょうか?デフォルトですべてを許可し、ファイルを個別に無視する代わりに、デフォルトですべてを無視し、特定のファイルのみを許可するとしたらどうでしょう?
簡単なGoプロジェクトでは、これが実際にはどのようになるかを示します。
! .gitignore
! *.go
! README.md
! go.mod
! go.sum
この.gitignoreファイルはまさにそれを実行します。
* - すべてを無視する
しかし、これらのファイルは無視しない...
! .gitignore - gitignoreファイル自体!
! *.go - Goソースファイル
! go.mod - Goモジュールファイル
! go.sum - Go依存関係ファイル
! その他含めたいもの
この設定では、明示的に許可したファイルのみがGitによって追跡されます。意図しないローカルファイルが誤ってコミットされることはもうありません。
このテクニックは、必ずしもすべてのリポジトリや開発者にとって正しい選択肢ではありませんが、検討すべき代替手段です。最近では、プロジェクトにはエージェント関連のドキュメントやサブフォルダなど、ローカルに多くのゴミがあるため、最初からすべてを無視する方が簡単に見えるかもしれません。
typescript-go.p.s.の207行の.gitignoreを見てみてください。パスがgitによって無視されているかどうかを確認したい場合は、次のコマンドを実行できます。
`git check-ignore -v internal/server/server.go`
追跡したいと思っていたファイルがGitに表示されない場合、これは多くの頭痛の種を救うことができます。
p.s. lazygitを聞いたことがありますか?最高のGit TUIです。ぜひチェックしてみてください。
この投稿をHacker Newsで議論する。
22シェア
前へ