エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点

      2019/02/24

.gitignoreの設定で除外「!(否定文)」を使う場合の注意点

 

.gitignoreの基本的な設定方法

 
Gitでファイルを管理する場合、管理対象にするファイルと管理対象にしないファイルの設定を「.gitignore」ファイルにします。
 
 
「.gitignore」ファイルの記述の方法の基本形は以下の通りとなっています。
 
「.gitignore」ファイルは、複数のフォルダに設置することが可能。
下層に行くほど優先される(記述内容が上書きされる)。
 
 

コメント

 
"#"で始まる行はコメントとなります。
 

 
 

ファイルを指定する

 
.gitignoreファイルにファイルを指定すると、そのファイルは git管理の対象外となります。
 

 
 

フォルダを指定する

 
.gitignoreファイルにフォルダを指定すると、そのフォルダは Git管理の対象外となります。
 

 
管理対象外としてフォルダを指定すると、フォルダ内にあるフォルダも管理対象外となるため、そのフォルダ内のパスを指定してもそもそも管理対象外であるため正常に反映されません。
今回の記事のポイントは、このフォルダの指定の仕方になります。
 
 

正規表現を使って指定する

 
.gitignoreファイルに指定するファイルやフォルダは、正規表現を使用して複数のファイル、フォルダを指定することもできます。
 

 
 

「!」を使って無視対象の否定設定をする

 
無視対象のフォルダの中の特定のファイルを無視対象から外す場合は「!(否定文)」を使います。
 

 
上記は、「test」フォルダは無視対象にしますが、その中の「test1.php」は無視対象から外す(監視対象にする)という設定になります。
 


 

.gitignoreの具体的な設定方法・対象外のフォルダ内のフォルダの指定方法

 

 
 

無視対象のフォルダの中のファイルを「!」を使って指定する

 
上記のような構成の中で、
/vendor/test1/test11.php
上記のファイルを無視対象(除外対象)から外したい場合は、下記のような記述になります。
 

 
 
下記の記述方法では正常に動作しません。
 

 
先の基本的な「.gitignoreの基本的な設定方法」の「フォルダを指定する」で少し触れましたが、最初に「/vendor/*」を記述していますので、「vendor」フォルダ内のすべてのファイル、フォルダが管理対象外(無視対象)となっています。
 
そのため、続けて「/vendor/test1/test11.php」を指定しても「/vendor/test1/」も無視の対象となっているため、無視の対象から除外することができません。
 
そのため、「!/vendor/test1/」を追加することで、無視対象の「vendor」フォルダの中の「test1」だけは無視対象から除外(否定)する設定を行います。
さらに「/vendor/test1/*」を追加して、改めて「/vendor/test1/」フォルダ内のファイル、フォルダを無視対象にする設定を行います。
 
 
同様に
/vendor/test2/test21/test211/test2111.php
上記のファイルを無視対象(除外対象)から外したい場合は、下記のような記述になります。
 

 
無視対象にしたフォルダの中の特定のファイル、フォルダを無視対象から外す(無視設定を否定)する場合は、その途中のパスも無視対象から外す(無視設定を否定)する設定をしていく必要が出てきます。
無視対象から外す設定は、階層が深くなるとそれだけ記述が長くなり面倒になります。
 
 

無視対象のフォルダの中のフォルダが 1つしかない場合の対応方法

 
さらに厄介なのが、「test31」のように、経由するフォルダの中にフォルダが 1つしかない場合です。
下記のように記述してもうまく動作しません。
 

 
 
下記は分かりやすいように 3行目、4行目をコメントにしていますが、下記のように「test31」の指定部分を削除する必要があります。
 

 
 

.gitignoreの設定方法のあと

 
.gitignoreを設定すると、その内容を反映し、無視対象から外したファイル(gitの管理対象に加えたファイル)を、改めて「git add .」で追加して、コミットする必要があります。
 
ですが、Gitはコミットした情報をキャッシュとして管理していますので、.gitignoreを更新しただけではうまく管理対象に加えたファイルを処理してくれない場合があります。
 
そんな場合は、Gitのキャッシュを削除する対応が必要になりますが、それについては下記に記事を書いていますので、併せて参考にしてください。
.gitignoreを更新しても反映されないときは「git rm -r --cached .」でキャッシュを削除
 
 

Git関連の記事

Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順
.gitignoreを更新しても反映されないときは「git rm -r --cached .」でキャッシュを削除
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
 
その他の「git」に関する記事一覧
 
 

 - プログラミング・Web関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

EストアのショップサーブのWordPressサービスにメリット無し

ショップサーブのオプションサービスのWordPressを使ってみましたがデータベースには直接触れず使えないサービスでした。

mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器

Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。

Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで「fatal: Authentication failed for ‘https://example.com/git_repositories/example.git/’」のエラーが出た場合の対処方法の一つ

Gitのリモートリポジトリにアクセスする際、Authentication failedのエラーが。しかし、ID、PASSが間違っているのではなく、リモートリポジトリのURLが間違っている場合もあるので再度確認を。

直リンク禁止の.htaccessを超分かりやすく解説。日本語じゃなくてPHPで説明

直リンクを禁止する.htaccessの記述内容を日本語ではなくPHPで解説!私自身もこの方法ですっかり理解できました。.htaccessって簡単!って思えますよ。

.gitignoreを更新しても反映されないときは「git rm -r --cached .」でキャッシュを削除
.gitignoreを更新しても反映されないときは「git rm -r –cached .」でキャッシュを削除

gitの.gitignoreを変更しても記述内容が反映されない時がある。それはGitのキャッシュが残っているため。そんなときは「git rm」コマンドを使ってキャッシュを削除すれば解決する。

Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説

開発進行中の環境、公開中の環境にGitを導入する。その基本的な手続きを解説。Gitの導入、ローカルリポジトリを作成。リモートリポジトリを利用し、本番環境にデプロイする手続きを解説。

日本語は2バイト文字?3バイト文字?

日本語は2バイトという理解でしたが、UTF-8では事情が違います。その説明です。

X Serverへの引越しの注意点まとめ。ロリポップとの違いと対処方法 6事例

ロリポップからX Serverに引越し。ロリポップとX Serverの違いに注目することでX Serverの設定方法を明確にします。またX Serverならではの設定ポイントなども解説。

PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。

Pythonの標準では日本語(全角文字)を利用できないので、利用する際は文字コードを宣言する必要がある。「# coding: utf-8」の様に記述すればOK。

Selenium WebDriver、Pythonをインストールし Chromeの自動操作の環境構築手順のまとめ

Selenium WebDriverを使ってChromeを自動操作する環境を構築する手順のまとめ。使用するPythonのインストールから、サンプルスクリプトの動作確認までを詳細解説。