不要なファイルを除外する
.gitignore を使って、Git に追跡させたくないファイルを管理しましょう。
.gitignore とは
プロジェクトには「Git で管理すべきでないファイル」が存在します。個人用のメモや、 パスワードなどの機密情報がこれに当たります。
.gitignore は、Git に「このファイルは無視してね」と伝える設定ファイルです。
ここに書かれたファイルやフォルダは git status に表示されず、git add しても追跡されません。
メモ用ファイルを作成する
まず、個人的なメモ用ファイル notes.txt を作ってみましょう。
TODO: 自己紹介ページにリンクを追加する
メモ: CSSは次のレッスンで学ぶ保存したら git status で確認しましょう。
git statusOn branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
nothing added to commit but untracked files present (use "git add" to track)notes.txt が Untracked files に表示されています。Git がこのファイルを認識しているということです。
このままだと、うっかり git add . で全ファイルをステージしたときに notes.txt も含まれてしまいます。
個人のメモをチーム全員に公開してしまうことになりかねません。
.gitignore を作成する
.gitignore ファイルをワーキングツリーのルートに作成して、notes.txt を除外しましょう。
notes.txtファイル名は必ず .gitignore にしてください。Git はこのファイル名で探しに来るので、.gitIgnore や gitignore(ドットなし)では機能しません。
保存したら、もう一度 git status を実行してみましょう。
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)notes.txt が消えて、代わりに .gitignore だけが表示されています。Git が notes.txt を無視するようになりました。
.gitignore をコミットする
.gitignore 自体は Git で管理すべきファイルです。チーム全員が同じ除外ルールを共有するために、コミットしておきましょう。
git add .gitignore
git commit -m ".gitignoreを追加".gitignore はプロジェクトの設定ファイルなので、最初のコミットの直後に作るのがベストプラクティスです。
今回はレッスンの都合で後から作りましたが、実際の開発では git init の直後に .gitignore を用意する習慣をつけましょう。
フォルダを除外するときは、末尾に / を付けます。temp/ と書くと、temp フォルダの中身がすべて無視されます。
よく使うパターン
実際の開発でよく .gitignore に書くパターンを紹介します。
| パターン | 意味 | 用途 |
|---|---|---|
node_modules/ | node_modules フォルダを除外 | npm (容量が大きく、npm install で復元できる) |
.env | .env ファイルを除外 | パスワードや キーなどの秘密情報 |
*.log | 拡張子が .log のファイルをすべて除外 | ログファイル |
.DS_Store | .DS_Store を除外 | macOS が自動生成するファイル |
Thumbs.db | Thumbs.db を除外 | Windows が自動生成するファイル |
.env ファイルは必ず .gitignore に入れましょう。 パスワードや キーが GitHub に公開されると、
悪用されるリスクがあります。一度 Git にコミットした情報は、履歴に残り続けます。
* はワイルドカードと呼ばれ、「任意の文字列」を表します。*.log と書くと「ファイル名が何であれ、拡張子が .log のファイルすべて」にマッチします。
他にもパターンがあります:
| パターン | 意味 |
|---|---|
* | 任意の文字列にマッチ |
** | 任意の階層のフォルダにマッチ |
! | 除外の例外(無視しない)を指定 |
たとえば !.env.example と書くと、.env は除外しつつ .env.example(設定のテンプレート)だけは追跡できます。
.envファイルには機密情報を書きます。.env.exampleは.envファイルの書き方の例を示していて、GitHub等で管理しておきます。
プロジェクトに参画した人は、このサンプルを参考に、に手動で.envファイルを作成します。
すでに追跡しているファイルを除外したい場合
.gitignore に書いても、すでに git add や git commit で追跡されているファイルは無視されません。
もし追跡済みのファイルを除外したくなった場合は、以下のコマンドで追跡を解除できます。
git rm --cached ファイル名--cached オプションを付けると、ファイル自体は削除されず、Git の追跡だけが解除されます。その後 .gitignore に追記すれば、以降は無視されるようになります。
--cached を付けないと、ファイル自体がディスクから削除されてしまうので注意してください。
手順をまとめると:
.gitignoreにファイル名を追記するgit rm --cached ファイル名で追跡を解除するgit commitで変更を記録する
この操作が必要になるのは「最初に .gitignore を書き忘れてコミットしてしまった」ケースです。
だからこそ、プロジェクトの最初に .gitignore を用意しておくことが大切です。
このレッスンのまとめ
.gitignoreで Git に追跡させたくないファイルを指定できる- ファイル名・フォルダ名・ワイルドカード(
*)でパターンを書ける .gitignore自体はコミットしてチームで共有する.envなどの秘密情報は必ず除外する
次のステップ
次のレッスンでは、間違えて編集してしまったファイルを元に戻す方法を学びます。「間違えても大丈夫」という Git の安心感を体験しましょう。