.gitignoreを更新しても反映されないときは「git rm -r –cached .」でキャッシュを削除
2019/02/24
.gitignoreを更新したときは「git rm -r –cached .」でキャッシュを削除
.gitignoreを更新したときのキャッシュクリアのまとめ
.gitignoreを更新して、「git status」コマンドを入力してみたけれど、管理対象にしたファイルが反映されない、ということが発生する場合があります。
その理由は、Gitのキャッシュがあるため。
1 |
git rm -r --cached . |
を実行して、キャッシュをクリアすると解決します。
.gitignoreファイルの設定方法については下記を参照してください。
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
.gitignoreに設定されていたフォルダを管理対象にするような場合
CakePHP3にデフォルトで設定されている「.gitignore」には「/vendor/*」の設定があり、「vendor」フォルダ、および、フォルダの中にあるフォルダ、ファイルはすべて Gitの管理下から外されています。
ですが、開発の内容によっては「vendor」フォルダの中にライブラリをインストールし、その中に作成したプログラムを設置。
そして、その設置したフォルダ、ファイルは Gitの管理下に置きたい、と思う場合もあるでしょう。
そんなときは、下記の記事で紹介したように管理対象にしたいファイルの情報を .gitignoreに記載します。
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
そして、設定変更をした .gitignoreファイルをサーバにアップし、「git status」コマンドを実行すると、本来は Gitの管理対象にした vendor内の特定のファイルは、追加されたファイルのリストの中にでてくるはずです。
ですが、.gitignoreに設定した情報が反映されない場合があるのです。
その理由は、Gitは更新情報をキャッシュとして持っているためで、管理対象外となっている「vendor」フォルダの中にあるファイルを管理対象にしたい、と設定しても、キャッシュがあるせいで .gitignoreの設定内容が反映されないのです。
そのために、キャッシュを削除する必要があります。
キャッシュをクリアするコマンドは下記のようになります。
下記は、すべてのキャッシュを一括して削除します。
1 |
$ git rm -r --cached . |
すべてのキャッシュを削除することに抵抗がある場合は、下記のようにファイルごとに指定することもできます。
1 |
$ git rm -r --cached ファイル名 |
具体的には下記のようになります。
1 |
$ git rm -r --cached /vendor/* |
「git rm -r --cached .
」を実行すると、すべてのキャッシュが削除されます。
すべてのキャッシュを削除するのが怖い、という感覚は理解できますが、コミットするとまた同じ様にキャッシュが保存されますので、まず試してみる!という気持ちも必要かと思います。
.gitignoreを更新したときの手順
具体的な手順は以下のとおりです。
.gitignoreを更新した後、下記のコマンドを実行します。
1 2 3 4 5 6 7 8 9 |
$ git status $ git rm -r --cached . $ git status $ git add . $ git status $ git commit -m ".gitignore update" |
最初に「git status」では、「.gitignore」が更新されたファイルとして表示されます。
次に「git rm」でキャッシュを削除します。
その次の「git status」では、キャッシュされていたファイルの一覧の表示されます。
おそらくすごい量のファイルのリストが表示されるでしょう。
そして、「git add」のあと「git status」を実行すると、更新された .gitignoreの内容に従って更新されたファイルのみが表示されます。
このとき、想定したファイルが正しく追加、削除されていることを確認します。
想定していた結果と違う場合は、一度「git commit」した後、改めて、.gitignoreファイルを更新し、最初の「git rm」からやり直します。
何度でもやり直しができますので安心してトライしてみてください。
「git rm -r –cached .」コマンドを実験してみたときの手順
キャッシュを削除するコマンドを実験してみたい場合は、.gitignoreを何も変えない状態で、また、「git status」を実行しても更新しているファイルがない状態で、実行してみるといいんじゃないかと思います。
実験してみるコマンドの例としては以下のような感じです。
1 2 3 4 5 6 7 8 9 10 |
$ git status $ git rm -r --cached . $ git status $ git add . $ git commit -m "try git rm" $ git status |
最初に「git status」では、更新ファイルはない、というメッセージが表示されます。
次に「git rm」でキャッシュを削除しますので、その次の「git status」では、キャッシュされていたファイルの一覧の表示されます。
おそらくすごい量のファイルのリストが表示されるでしょう。
そして、「git add」「git commit」を実行すると、「git rm」を実行する前の状態に戻りますので、「git status」を実行しても更新ファイルはない、というメッセージが表示されます。
また、上記のキャッシュのクリアを試してみたい場合は、実験用のブランチを作成し、そこで実行する、という方法もより安全に実験する方法として利用できるでしょう。
ただ、当然ながら、gitの管理下にない場合は、ブランチを切り替えてもなくなりませんが、.gitignoreファイルを更新し、gitの管理下になったファイルは、ブランチを切り替えるとなくなります。
そのため、ブランチを切り替えたとき、「ファイルが消えた!」と思ったりして、慌ててブランチを削除しないようにしてくださいね。
Git関連の記事
Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順.gitignoreを更新しても反映されないときは「git rm -r --cached .」でキャッシュを削除
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
その他の「git」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
WordPress、Webサイトの表示高速化!画像を軽くする基本的な考え方
画面表示の高速化には画像のファイル容量を小さくする方法があります。ツールを使わなくても小さくするための基本的な考え方を解説します。
-
-
SyntaxHighlighterを導入してソースコードを見やすくしてみました
PHP、HTMLなどのソースコードをブログで紹介するとき、SyntaxHighlighterを利用することで見やすく提供することが出来ます。
-
-
.htaccessのmod_deflateでファイル圧縮送信で高速化でSEO対策!
Page Speed Insightsの指摘事項であるファイルの圧縮送信の対応方法。処理内容の解説もあるけど、.htaccessにコピペするだけの簡単設置で効果抜群!SEOにも威力を発揮!
-
-
コピーコンテンツ・直リンクの3つの対策Google通報などのまとめ
コピーコンテンツを発見したときにやること!Googleに通報、画像の直リンクを禁止、RSSの全文配信を停止。この対策をしないとあなたのサイトの評価も下がるかも!
-
-
PythonでURLの有無、存在をチェックするスクリプト
PythonでURLが存在するか否かのチェックスクリプト。ライブラリ「urllib2」を使い、指定のURLにアクセスしそのレスポンスコードを判別するという仕組み。
-
-
Git管理のソースを元に新しく構築する環境に反映させる手順
Gitで管理しているソースを使って環境を構築する方法を解説。CakePHPを使う想定で、環境を構築したのちpullして、重複ファイルを削除して、改めてpullすれば出来上がる。
-
-
コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応
不正なコピーコンテンツからの直リンクを拒否する.htaccessの設定方法。拒否するサイトを指定、許可するサイトを指定する方法、単純な拒否と画像の差し替えを解説。
-
-
So-netのレンタルサーバHSはヤバイ・借りてはいけないレンタルサーバリスト
餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、単独でSo-netを紹介。OEMでサービスの提供を受けているだけなので何とも残念すぎる内容。
-
-
Pythonをコマンドラインで実行。全角文字(日本語)を引数にする場合の対処方法
Pythonをコマンドラインで実行する際、引数を付与して実行する方法の解説。その時問題となる日本語(全角文字)を利用する方法を解説。Windows環境での解説。
-
-
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
Gitで管理する対象、対象外のファイル、フォルダの指定は .gitignoreに記述する。その基本的な記述の方法に加え、無視対象にしたフォルダの中の特定のファイルを管理対象にする記述方法を解説。