.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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器
Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。
-
-
コピーコンテンツ・直リンクの3つの対策Google通報などのまとめ
コピーコンテンツを発見したときにやること!Googleに通報、画像の直リンクを禁止、RSSの全文配信を停止。この対策をしないとあなたのサイトの評価も下がるかも!
-
-
Selenium WebDriverでFirefoxをプライベートウィンドウ/Chromeをシークレットモードで起動する方法・言語はpython
Seleniumでは初期状態でブラウザを起動する Seleniumでブラウザ …
-
-
直リンク禁止の.htaccessを超分かりやすく解説。日本語じゃなくてPHPで説明
直リンクを禁止する.htaccessの記述内容を日本語ではなくPHPで解説!私自身もこの方法ですっかり理解できました。.htaccessって簡単!って思えますよ。
-
-
ブラウザのキャッシュを活用するの対策!広告バナーを消して表示を高速化
あなたのサイトが遅いのはバリューコマースのバナーではないですか?バリューコマースのバナーを外すだけでmod_deflateとmod_expiresを設定するより効果があります!
-
-
PythonでURLの有無、存在をチェックするスクリプト
PythonでURLが存在するか否かのチェックスクリプト。ライブラリ「urllib2」を使い、指定のURLにアクセスしそのレスポンスコードを判別するという仕組み。
-
-
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
Apacheが起動しているかを確認する方法の解説に加え、Apacheの起動、停止、再起動のコマンドを解説。再起動のコマンドには restart、condrestart、reload、gracefulがあり、違いを解説。
-
-
CentOS環境に ntpdをインストールして自動的に時刻を取得して合わせる設定にする
VirtualBoxに構築した CentOSの環境の時計がずれているとき、ntpdをインストールし、時計を合わせる方法を解説。NTPサーバを指定する方法や ntpdを自動起動する設定も解説。
-
-
サイト更新、引越時に.htaccessでリダイレクトする方法解説
サイト更新,引越しなどでサイトのURLが変わった場合のリダイレクトを.htaccessのRewriteEngineを使って処理する方法の解説です。
-
-
.htaccessのmod_deflateでファイル圧縮送信で高速化でSEO対策!
Page Speed Insightsの指摘事項であるファイルの圧縮送信の対応方法。処理内容の解説もあるけど、.htaccessにコピペするだけの簡単設置で効果抜群!SEOにも威力を発揮!