2026年9月6日(日)掲載 4,120本日 25
HN151151

初期状態で全ファイルをGit管理対象外にする`.gitignore`の極意

.gitignore Everything by Default

der_gopher約20時間前

議論

11
0der_gopherスレ主151約20時間前

プロジェクトのルートディレクトリで.gitignoreを適切に設定し、すべてのファイルを一度Gitの管理外(ignore)に置くことで、必要なファイルだけを選択的に追加するアプローチです。プロジェクトのセキュリティ向上や、不要なビルドアーティファクトの混入を防ぐのに非常に有効です。具体的には、プロジェクトのルートディレクトリに以下のように設定します。*で全てを除外し、!(感嘆符)を使って必要なディレクトリやファイルだけをホワイトリスト形式でGitに認識させる手法です。*!README.md!src/この設定により、デフォルトですべてのファイルを無視しつつ、READMEとsrcディレクトリ配下のみを明示的にトラッキング対象にできます。

1matthewmc3約20時間前

全部無視するっていうのはどうかなと思うけど、自分のGitワークフローで最高だった変更の一つは、~/.config/git/ignore に .* を追加して、デフォルトで全てのドットファイルを無視するようにしたことだね。

プロジェクトのたびに共通のファイル(!.gitignore, !.gitattributes, !.github, !.editorconfig など)をアンイグノア(無視解除)するボイラープレートが必要にはなるけど、それさえ済ませれば、あとは好きな時に .foo.lang ファイルや .tmp/.cache ディレクトリ、Claudeのヘルパー用ファイル(.code_analysis.md)、.todos.txt なんかをプロジェクトに放り込める。gitignoreの管理を忘れて散らかる心配もないしね。もっとみんなこのやり方をすればいいのにって思う。

2caseyw約19時間前

自分はデフォルトで無視するんじゃなくて、明示的に追加したいものだけをステージングするようにしてる。

ペアプロしてる時に相手が「git add .」って叩くのを何度見たか数え切れないけど、その選択肢はいつも謎だわ。

分からなくはないけど、一つ一つ慎重に選ぶより、全部追加することで発生する問題の方がこれまで多く見てきたし。まあ人それぞれだけどね。

3flexagoon約19時間前

リポジトリに入れるべきじゃないゴミ(例えば CLAUDE.md)

どうして CLAUDE.md や AGENTS.md が「リポジトリに入れるべきじゃないゴミ」なの?プロジェクトでエージェントを使っていて、それ専用のルールがあるなら、リポジトリを使っている他のメンバーにもそのルールを共有して、質の低いコードが生成されないようにするのが当然でしょ?

4rcfox約19時間前

あんまり良いアドバイスとは思えないな。ファイルを誤ってコミットすることなんて滅多にないし、それよりコミットしなきゃいけないファイルをアンイグノアし忘れる方が100%ありそうだもん。

gitignoreで全部無視する初期設定をわざわざ作るくらいなら、普通のファイルを無視するテンプレートを作って全リポジトリにコピーする方がずっと良くない?

5Brajeshwar約17時間前

開発者が提案してくるアドバイスって、時々「自分一人で作業してる世界」や「経験不足」な環境から出てきたような奇妙なものがあるよね。

この件に関しては .gitignore_global があれば、言及されている .DS_Store やIDEの設定ファイル、圧縮ファイルなんかの「いつもの犯人」は全部片付く。万が一何かあっても、重要なファイルが入る前の初期スキャフォールド段階で大抵は気づけるし。

もし新人教育してるなら、global gitignore やローカル設定、ドットファイルの話を教えてあげて、手本として自分のがあればそれを見せてあげるのが一番だよ。

追記:ネット上にあるドットファイルの中で最高とは言えないけど、これのおかげでデバイスや環境(仕事用、プロジェクト用、個人用など)の切り替えがすごく楽になった。最近整理して Claude Code で自動化やテストも追加したよ。 https://github.com/brajeshwar/dot

6yipinwong約17時間前

セキュリティエンジニアっぽい考え方だね。

VPSのポートを全閉してから一つずつ開けるっていうのと全く同じアプローチだ。

ただ一つ難点を挙げるとすれば、何を許可すべきかを見極めるのが大変なことかな。ポートなら簡単だけど、ファイルには星の数ほど拡張子があるからね。

アプリやCLIツールが勝手に生成する見たこともない拡張子のファイルなんかで問題が起きる可能性があるし。

それ以外は面白いアプローチだと思うよ。

7isityettime約17時間前

「git add」を正しく使う練習をしたらどう?「git add -A」を叩き続けることに執着しすぎじゃない?.gitignoreをいじらなくても、コミットしてないファイルをワークツリーに置いておくなんて難しくないよ。

8serbuvlad約13時間前

.git/info/exclude をもっと活用するべき!

Cursorを使ってるなら .cursor ディレクトリが作られるよね?ならそれを .git/info/exclude に入れればいい。わざわざプロジェクトの .gitignore をそれで汚す必要なんてないんだよ。.gitignore はソフトウェアのビルドやテストで生成されるアーティファクトや、リポジトリ内のスクリプトのためのものなんだから。

9b5n約10時間前
  strict_ignore() {
    [[ -n "$1" ]] || exit 1
    local repo="${1%/}/"
    local ignore
    ignore=$(find "$repo" -path "$repo".git -prune -o -print \
               | sed "s|$repo||g; /^$/d" \
               | awk '{print "!"$0}' \
               | sort)
    printf "*\n%s\n" "$ignore"
  }
10jxndnendn約9時間前

DS_Store とか node_modules を間違えてコミットする人なんているの?インデックスを確認せずに「追加」して「コミット」までしちゃうってこと? o_O