.gitignoreというファイルを使うことで、Gitで特定のファイルやディレクトリを管理対象外にすることができます。
ここでは.gitignoreファイルの基本的な記述方法と、WordPressの開発環境で有用な記述例を解説しています。
.gitignoreファイルを使ってGit管理対象外のファイル・フォルダを指定する
「.gitignore」ファイルはGitの管理対象ディレクトリ内に複数配置することができます。
.gitignoreの内容はテキスト形式。ファイル内に条件などをテキストで記述します。
.gitignoreファイルを複数のディレクトリに配置した場合、より末端(階層の深い)のパスに配置された.gitignoreファイルの内容が優先的に反映されます。
.gitignoreファイルの書式
代表的な書式をご紹介します。
ファイル名やディレクトリ名のみを記述
「/」記号を含めずファイル名やディレクトリ名を記述した場合、その.gitignoreファイルが置かれたディレクトリ配下にあるその名前のファイルとディレクトリが除外されます。
パスを含めたファイル名、ディレクトリ名を記述
その.gitignoreが置かれたディレクトリからの相対パスで指定されるファイルとディレクトリが除外されます。
「/img」のように「/」記号から始まるパスの記述の場合、.gitignoreファイルが置かれたディレクトリ直下にある「img」ディレクトリが除外対象となります。(「/resource/img」などは除外されません。)
「img/」のように「/」記号で終わるパスの記述の場合、.gitignoreファイルが置かれたディレクトリ配下のサブディレクトリすべてにある「img」ディレクトリが除外対象となります。
同様に「img/icons/」のように複数のパスで記述した場合は、同様の構成の相対ディレクトリが除外対象となります。
「!」記号で始まる行
否定文として解釈されます。「!」記号意向で指定されたファイル、ディレクトリを除外対象としません。前述までのパスの指定と組み合わせることで、特定のファイルやディレクトリのみを管理対象とすることができます。
「#」記号で始まる行
コメントを記述することができます。(処理上なにも解釈されません)
「*」記号
「/」や「.」記号以外の0文字以上の文字列にマッチします。
「?」記号
「/」や「.」記号以外の1文字にマッチします。
「**」記号
0個以上のファイルやディレクトリにマッチします。深い場所にある特定の名称のディレクトリや、複数の同名のディレクトリが並列に配置されている場合などでそれらのディレクトリをまとめてgitの対象外としたい場合などに使えます。
.gitignoreファイルの記述例
# 直下の「plugin」ディレクトリ配下を対象外にする。
plugin/
# 配下の「img」ディレクトリすべてを対象外にする
**/img/
# 配下の拡張子「log」のファイルすべてを対象外にする
# (/をつけないことでサブディレクトリ全体を指定)
*.log
WordPress開発環境での.gitignoreの記述例
WordPressの開発環境などでプラグインやテーマの開発を行っている場合、その他のディレクトリにあるファイル群は基本的にシステムのアップデートを利用するため差分ファイルの管理はローカルのコーディング環境で行われていないことも多いと思います。
これらのコードの追跡はgitの負荷が上がってしまうだけなので、関係ないディレクトリはまとめて.gitignoreで除外しておくと効率的です。
.gitignoreサンプル(WordPress/Cocoonカスタマイズ環境)
WordPressの標準的なディレクトリ構成を例に、ローカルでの開発ディレクトリ以外のシステム関連のディレクトリをgitの管理対象外にする.gitignoreファイルの記述サンプルです。
[hogehoge]、[fugafuga] の記述などを各自の環境に合わせて書き換えて使用してみてください。
# -----------------------------------------------------
# 全体的な設定
# -----------------------------------------------------
# WordPressシステムが使用するディレクトリをgitの管理対象外にする
**/wp-admin/
**/wp-includes/
**/wp-content/languages/
**/wp-content/upgrade/
# プラグインディレクトリの配下をまとめてgitの管理対象外にする
**/wp-content/plugins/*
#テーマディレクトリの配下をまとめてgitの管理対象外にする
**/wp-content/themes/*
# -----------------------------------------------------
# プラグインの開発を [hogehoge] ディレクトリで行っている場合
# -----------------------------------------------------
# [hogehoge] ディレクトリだけを対象外から外す
#(バックアップディレクトリの管理などを考慮して前方一致で指定)
!**/wp-content/plugins/hogehoge*
# -----------------------------------------------------
#テーマの開発を [fugafuga] ディレクトリで行っている場合
# -----------------------------------------------------
# [fugafuga] ディレクトリだけを対象外から外す
#(親テーマ、子テーマやバックアップディレクトリなどにもヒットするように前方一致で指定)
!**/wp-content/themes/fugafuga*
例えば、私の場合わいひらさんのCocoonテーマのカスタマイズを多く行っているのですが、そんな時は下記のような感じでCocoonの親子テーマのみをgitの管理対象になるようにしています。
#テーマディレクトリをまとめてgitの管理対象外にする
**/wp-content/themes/*
# Cocoonの親テーマ、子テーマのディレクトリだけを対象外から外す
!**/wp-content/themes/cocoon*
.gitignoreファイルの変更が反映されない
gitにキャッシュデータが残り続けると.gitignoreファイルの変更が反映されません。
キャッシュデータの削除で正しく反映されると思いますので、以下をコンソールから実行後、再度コミット&Pushをしてください。
git rm -r --cached .
※このコマンドでファイルが削除されたりすることはありません。
コメント