.gitignore ジェネレーター
使用している言語、フレームワーク、エディタにチェックを入れるだけで.gitignoreファイルを作成できます — Node.js、Python、Java、macOS、Windows、VS Codeなど、重複を排除し、すぐにダウンロードできます。
227回閲覧
使い方
プロジェクトに当てはまる項目にチェックを入れます — Node.js、Python、Javaのような言語やランタイム、macOS、Windows、Linuxのようなオペレーティングシステム、VS CodeやIntelliJ/JetBrainsのようなエディタ、そしてGit自体が残す一時ファイル用のブロックや.envと機密情報用のブロックです。チェックを入れるたびに、コミュニティが実際に使っている慣習から集めた、確立された小さな無視パターンの集合が追加されます — Node向けのnode_modules/、Python向けの__pycache__/と.venv/、Java向けの*.classとtarget/、macOS向けの.DS_Store、Windows向けのThumbs.dbなどです。チェックを増やすたびに、このツールはすべてを1つのリストにまとめ、完全に一致する重複を取り除き、結果をテキストボックスにリアルタイムで表示します。そこからコピーするか、.gitignoreという名前のファイルとして直接ダウンロードできます。
ゼロから1つずつ書くのではなく複数のカテゴリを組み合わせる理由は、実際のほとんどのプロジェクトが同時に複数のカテゴリにまたがっているからです。VS CodeでMac上に開発されたNode.jsのAPIであれば、ビルド生成物のためのNodeブロック、.DS_Storeがプルリクエストに紛れ込まないためのmacOSブロック、そして自分のエディタ個人設定がチームメイトの設定を上書きしないためのVS Codeブロックが必要になります。この3つにまとめてチェックを入れて一度にダウンロードするほうが、記憶を頼りにパターンを手作業で組み立てたり、古いプロジェクトから断片をコピー&ペーストしたりするよりも、速く、間違いも少なくなります。
知っておくべきこと
.gitignoreファイルは、Gitがまだ認識していないファイルにしか影響しません — git statusやgit add .、今後のコミットから除外すべき未追跡のファイルをGitに伝えるものです。すでに追跡されている(少なくとも一度はコミットされた)ファイルには一切効果がありません。これは最もよくある誤解です。すでにコミットされた後で.envを.gitignoreに追加しても、リポジトリからは削除されず、その後の変更をGitが追跡し続けることも止まりません。実際にファイルの追跡を解除するには、まずgit rm --cached <file>を実行し(これはGitのインデックスからは削除しますが、ディスク上には残します)、この削除をコミットする必要があります — その時点で初めて、対応する.gitignoreルールがその後有効になります。
ここで提供されているパターンのほとんどは、言語やツール固有のテンプレートとして最も広く参照されているGitHub公式のgithub/gitignoreリポジトリに由来しており、GitHub自体がWeb UIから新しいリポジトリを作成する際に提供するのと同じコレクションです。node_modules/のような依存関係フォルダやdist/、target/のようなビルド出力をバージョン管理の対象外にしておくことはサイズの面で重要です — これらのフォルダは実際のソースコードの何倍もの容量になりがちで、ロックファイルやビルドスクリプトから簡単に再生成できます — 一方で.env、*.pem、*.keyのようなファイルを対象外にしておくことはセキュリティの面で重要です。機密情報をGitの履歴にコミットすると、事実上永久に公開されたことになります。最新のコミットから削除しても、履歴を完全に書き換えない限り、それ以前のコミットからは消えないためです。
よくある質問
.gitignoreにファイルを追加したのに、Gitがまだ追跡しています。なぜですか?
.gitignoreは、Gitがまだ認識していないファイルの追跡を止めるだけです。ルールを追加する前にファイルが既にコミットされていた場合、.gitignoreに何が書かれていてもGitはそれを追跡し続けます。これを直すには、git rm --cached <file>(フォルダの場合はgit rm -r --cached <folder>)を実行し、その変更をコミットしてください — その時点から.gitignoreのルールが有効になります。
Node.js、macOS、VS Codeのように複数のカテゴリを組み合わせることはできますか?
はい — それが通常の使い方です。自分の環境に当てはまるすべての項目にチェックを入れると、このツールはすべての結果パターンを1つのリストにまとめ、完全に一致する重複を削除するため、同じ行が二度表示されることはありません。
これらの無視パターンはどこから来ているのですか?
これらはGitHub公式のgithub/gitignoreテンプレートリポジトリと同じ慣習に従っています。これは、ほとんどのツールやチュートリアルが標準として参照している出典です。リポジトリを作成する際にGitHub自身の「Add .gitignore」オプションでテンプレートを生成した場合と同じファイル/フォルダのパターンになります。
なぜnode_modules/や.envは絶対にコミットしてはいけないのですか?
node_modules/はpackage.json/package-lock.jsonから数秒で再生成できる依存関係のキャッシュです — これをコミットすると、リポジトリが数メガバイト(時には数ギガバイト)もの不要なファイルで膨れ上がります。.envは事情が異なります。通常はAPIキーやデータベースのパスワードなどの機密情報が含まれており、一度Gitの履歴に機密情報が入ってしまうと、それは漏洩したものとみなすべきです。最新のコミットから削除しても、それ以前のコミットからは削除されないためです — これを本当に解決する唯一の方法は、履歴を書き換えること(そして機密情報をローテーションすること)です。
ダウンロードしたファイルの名前を変更する必要はありますか?
いいえ。ダウンロードボタンは、Gitが期待する正確な名前 — 先頭にドットが付き、拡張子のない.gitignore — でファイルを保存するため、最初のコミットの前に、プロジェクトのルートフォルダにそのまま配置できます。
関連ツール
問題を報告
.gitignore ジェネレーター
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!