.gitignore の使い方:実用的な導入と例

Gitを使用する際、リポジトリを清潔で整理された状態に保つことは単なるベストプラクティスだけでなく、スムーズな共同作業や効率的なバージョン管理にとって不可欠です。そのために .gitignore ファイルが役立ちます。この便利なファイルは、Gitに無視させるべきファイルを指定し、不要な混乱を防ぎ、コミットを本当に重要なものに集中させます。

.gitignore ファイルがないと、リポジトリはすぐに一時ファイルやログ、バージョン管理に適さないその他のファイルで溢れかえる可能性があります。さらに悪いことに、機密情報をうっかり共有してしまうかもしれません。

このチュートリアルでは、プロジェクトを整理し、一般的な落とし穴を避け、Gitをより効果的に活用するために .gitignore ファイルを作成して使用する方法を学びます。さあ、始めましょう!

.gitignore ファイルとは何ですか?.gitignore ファイルは、Gitで使用される構成ファイルで、変更がステージングされるかコミットされる際に無視すべきファイルやディレクトリをバージョン管理システムに指示するために使用されます。不必要なファイル(一時的なファイル、システム生成ファイル、ビルド関連ファイルなど)をリポジトリから取り除くことで、リポジトリをきれいに保つことができ、協力が容易になり、必要なファイルのみが追跡されることが保証されます。

.gitignoreファイルは、Gitリポジトリのルートディレクトリに置かれるシンプルなテキストファイルです。これには、Gitに無視すべきファイルやディレクトリを指示するパターンが含まれています。これらのパターンはプロジェクトのニーズに合わせてカスタマイズでき、整理されたリポジトリを維持するのに役立ちます。

GitやGitHubに不慣れですか?このGitHubとGitのチュートリアルでバージョン管理の初心者向けの紹介を受けましょう。

無視すべき一般的なファイルやディレクトリのカテゴリは以下の通りです:

  • ビルドアーティファクト:ソースコードから再生成可能なビルドプロセス中に生成されるファイル、例えば:
    • dist/, build/(フロントエンドおよびバックエンドのビルド出力)
    • target/(Javaや他のコンパイル言語のビルド)
  • 依存関係:パッケージ管理システムがインストールされたライブラリのために作成するディレクトリは追跡するべきではありません:
    • node_modules/(Node.js)
    • vendor/(PHP, Composer)
    • .venv/, venv/(Pythonの仮想環境)
  • システム固有のファイル:これらのファイルはオペレーティングシステムによって自動的に生成され、プロジェクトには寄与しません:
    • .DS_Store(macOS)
    • Thumbs.db(Windows)
  • IDEの設定ファイル: 各開発者は異なる開発環境を使用する可能性があるため、個人設定はバージョン管理に含めるべきではありません:
    • .vscode/ (VS Code)
    • .idea/ (JetBrains IDEs)
    • .project, .settings/ (Eclipse)
  • ログと一時ファイル: ログ、キャッシュ、一時ファイルは不要な混乱を防ぐために無視する必要があります:
    • *.log, npm-debug.log*, yarn-debug.log*, yarn-error.log* (さまざまなツールのログ)
    • *.tmp, *.bak (一時ファイルとバックアップファイル)
    • .mypy_cache/, __pycache__/ (Pythonキャッシュ)
    • .ipynb_checkpoints/ (Jupyter Notebookのチェックポイント)
  • 環境および秘密ファイル: 機密情報や環境固有の設定は決してコミットすべきではありません:
    • .env, .env.local, .env.development, .env.production
    • secrets.json, config.json (機密設定ファイル)
  • データベースとストレージファイル: これらはローカルで生成され、バージョン管理に含めるべきではありません:
    • *.sqlite, *.sqlite3, *.db (SQLiteデータベースファイル)
    • dump.rdb (Redisデータベースダンプ)
  • CI/CDおよびカバレッジファイル: テストカバレッジレポートやその他のCI/CDアーティファクトは無視されるべきです:
    • coverage/, *.lcov (コードカバレッジレポート)
    • .tox/, .pytest_cache/(Pythonテストファイル)

Gitをインストールする必要がありますか? このGitインストールチュートリアルの手順に従って、迅速にセットアップしましょう。

.gitignoreの構文

前述のように、.gitignoreファイルには、リポジトリ内のファイル名に対して一致するパターンが含まれており、それらを無視するかどうかを決定します。

基本構文

基本的に、.gitignoreファイルは各行が無視されるパターンを表す行で構成されています。パターンは次のものに一致できます:

  • 特定のファイル
  • ファイルタイプ
  • ディレクトリ

ファイルはコメントもサポートしており、行の先頭に#を付けることで追加できます。また、可読性を向上させるために空行を使うこともできます。

基本的な構造の概要は以下の通りです:

  • 特定のファイルを無視する:無視したいファイル名を直接リストに追加できます。
secrets.txt
  • ディレクトリ全体を無視する: ディレクトリ名の末尾に/を追加することで、そのディレクトリ内のすべてを無視することができます。
logs/
  • 特定の種類のファイルをすべて無視する: ワイルドカード(*)を使用して、特定の拡張子を持つすべてのファイルを無視することができます。
*.py
  • 否定: !を使用してパターンを否定し、無視されるはずの特定のファイルやディレクトリを明示的に追跡することができます。
*.txt # Ignores all .txt files !readme.txt # Except for readme.txt

.gitignoreファイルの作成と使用方法

.gitignoreファイルの作成と使用は非常に簡単です。このセクションでは、手順を説明します。

.gitignoreファイルの作成

ステップ1:リポジトリのルートに移動する.gitignoreファイルは、通常、Gitプロジェクトのルートディレクトリに配置されます。ターミナルまたはコマンドラインを開き、Gitリポジトリのルートディレクトリに移動します:

cd /path/to/your/repo

ステップ2:.gitignoreファイルを作成する。 ルートディレクトリに入ったら、テキストエディタを使用するか、ターミナルで次のようなコマンドを実行して、.gitignoreファイルを作成します:

touch .gitignore

ステップ3:ファイルにパターンを追加するテキストエディタで.gitignoreファイルを開き、ファイルやディレクトリを無視するための必要なパターンを追加します。各行が異なるパターンを表します。

基本的なプロジェクトでよく使用される.gitignoreファイルの例です:

# node_modulesや依存ディレクトリを無視 node_modules/ vendor/ # ビルド生成物を無視 dist/ build/ *.log # システムが生成したファイルを無視 .DS_Store Thumbs.db # 環境や秘密ファイルを無視 .env config.json

必要なパターンを追加したら、ファイルを保存します。Gitはこれらのファイルを自動的にステージングやコミット時に無視するようになります。

ステップ4: ファイルをリポジトリにコミットする。全てのコラボレーターが同じ無視ルールを使用できるように、.gitignoreファイルをリポジトリにコミットすることが重要です。これにより、プロジェクトに関わる全員の間で一貫性が保たれます。

git add .gitignore git commit -m "Add .gitignore file" git push

.gitignoreファイルがコミットされると、チーム全体で共有の無視ルールが確立されます。

Gitでプッシュとプルをマスターしたいですか?リモートリポジトリと作業を同期する方法を学ぶ このGitプッシュとプルのチュートリアルで

.gitignoreを使用するためのベストプラクティス

.gitignoreファイルを作成することは、クリーンなGitリポジトリを維持するための簡単な手順ですが、時間の経過と共にファイルを効果的に管理するためにはいくつかのベストプラクティスに従う必要があります。

グローバルな.gitignore

複数のプロジェクトで作業する開発者にとって、プロジェクトの種類に関係なく、特定のファイルをすべてのリポジトリから除外したい場合があります。

それぞれのプロジェクトの.gitignoreファイルにそれらを追加する代わりに、システム上のすべてのリポジトリに適用されるグローバルな.gitignoreを構成できます。

グローバルな.gitignoreファイルを構成するには:

  • .gitignore_globalファイルを作成します:
touch ~/.gitignore_global
  • グローバルで無視したいファイルのパターンを追加します。たとえば、次のようにします:
.DS_Store *.log /.vscode/ /.idea/
  • Git にグローバルな .gitignore を使用するように設定します:
git config --global core.excludesfile ~/.gitignore_global

既存のテンプレートを活用

新しいプロジェクトごとにゼロから .gitignore ファイルを作成する代わりに、特定の言語、フレームワーク、または環境向けに事前に設定された .gitignore テンプレートを活用できます。

これらのテンプレートの最高のリソースの1つは、GitHub の公式 .gitignore リポジトリです。そこでは、何百ものプログラミング言語やフレームワーク向けに調整された .gitignore ファイルを見つけることができます。

.gitignore を定期的に確認します

プロジェクトが進化するにつれて、.gitignoreファイルに新しいファイルやディレクトリを追加する必要が生じるかもしれません。現在のプロジェクトの状態を反映するために、定期的にファイルを見直して更新することが重要です。

.gitignoreファイルを更新する必要があるシナリオには、次のようなものがあります:

  • 追加のファイルを生成する新しいツールやライブラリを採用する場合(例: 新しいビルドシステムに切り替える)。
  • ディレクトリのリファクタリングや再編成によって、除外すべき新しいファイルが生じる場合。
  • プロジェクトに含まれなくなった古いファイルやディレクトリを削除する場合。

Troubleshooting .gitignore

`.gitignore`ファイルを設定した後でも、特定のファイルがトラッキングされている場合や、パターンが期待通りに機能しない場合があります。このセクションでは、2つの一般的なトラブルシューティング領域とその解決方法について説明します。

すでにコミットされたファイルのトラッキング

`.gitignore`ファイルは、すでにコミットされたファイルには遡及的に適用されません。

特定のファイルがすでにコミットされた後に`.gitignore`にパターンを追加すると、Gitはそのファイルを引き続きトラッキングし続けますが、`.gitignore`ファイルのパターンと一致します。

すでにコミットされたファイルのトラッキングを停止するには、次の手順に従います:

  • Gitのトラッキングからファイルを削除する: git rm コマンドを使用して、作業ディレクトリに保持しながらリポジトリから削除します。
git rm --cached <file_or_directory_name>
  • 変更をコミットする: Gitのトラッキングからファイルを削除した後、ファイルがバージョン管理履歴の一部ではなくなっていることを確認するために、変更をコミットします。
git commit -m "Stop tracking ignored files"
  • 変更をリモートリポジトリにプッシュする: 最後に、ファイルがトラッキングされなくなったことを確認するために、変更をリモートリポジトリにプッシュします。
git push

これらの手順を実行すると、Gitはファイルのトラッキングを停止します。コミットされたファイルは作業ディレクトリにまだ残っていますが、将来のコミットでは.gitignoreのパターンに基づいて無視されます。

パターンが機能していることを確認する

時々、無視されるはずの特定のファイルがGitの状態に表示されるか、トラッキングされていることがあります。

.gitignoreのパターンが正しく機能していることを確認するには、次の手順に従ってください:

  • ファイルの状態を確認する:git statusコマンドを使用してGitがトラッキングしているファイルを確認します。これにより、無視されるはずのファイルがまだリストされているかどうかを確認できます。
git status
  • パターンが正しいことを確認してください:.gitignoreパターンの構文を再確認して、適切にフォーマットされていることを確認してください。例:
    • 正しいディレクトリパス(リポジトリのルートに対する相対パス)を使用していることを確認してください。
    • 特定のディレクトリを対象とするために、/を追加して全く同じ名前のすべてのファイルを追跡しないようにします。
  • キャッシュをリフレッシュ:.gitignoreファイルを最近更新したにもかかわらず変更が適用されていない場合、Gitは以前のキャッシュを保持している可能性があります。キャッシュをリフレッシュするには、次のコマンドを実行してください:
git rm -r --cached . git add . git commit -m "Refresh .gitignore"
  • 例外を確認する:時には、.gitignore内の特定のパターンが、ファイル内の他のより具体的なパターンによって上書きされることがあります。競合するパターンがないことを確認するために、ルールを見直してください。

迅速なGitリファレンスを探していますか?このGitチートシートを使って、必要なコマンドを指先で確認できます。

結論

.gitignoreファイルは小さく見えるかもしれませんが、Gitリポジトリをクリーンで管理しやすく保つ上で非常に重要な役割を果たします。不必要なファイル—依存関係、ビルド成果物、システム生成ファイルなど—を無視することで、プロジェクトが整理され、雑然としないように保つことができます。

このチュートリアルでは、.gitignoreファイルの作成方法、パターンの追加、およびリポジトリを効率的に保つためのベストプラクティスの適用方法を学びました。これらのスキルを使えば、バージョン管理の問題を回避し、チーム全体でのコラボレーションをスムーズにすることができます。

Gitスキルを深めたい場合は、構造化された学習パスとしてGit Fundamentalsをチェックしてみてください。また、Foundations of GitIntroduction to GitHub Conceptsなどの実践的なコースを探索して、バージョン管理とコラボレーションのワークフローについてしっかり理解を深めることもできます!

Source:
https://www.datacamp.com/tutorial/gitignore