.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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
直リンクとは何か?直リンクとディープリンクの違いと著作権問題
直リンクは著作権違反なのか?議論の前にまず「直リンク」の意味を正しく理解しよう。直リンクは他のサイトの画像を読み込む、ディープリンクなど多様な意味がある。
-
Gitで「fatal: Authentication failed for ‘https://example.com/git_repositories/example.git/’」のエラーが出た場合の対処方法の一つ
Gitのリモートリポジトリにアクセスする際、Authentication failedのエラーが。しかし、ID、PASSが間違っているのではなく、リモートリポジトリのURLが間違っている場合もあるので再度確認を。
-
SyntaxHighlighterを導入してソースコードを見やすくしてみました
PHP、HTMLなどのソースコードをブログで紹介するとき、SyntaxHighlighterを利用することで見やすく提供することが出来ます。
-
サイト更新、引越時に.htaccessでリダイレクトする方法解説
サイト更新,引越しなどでサイトのURLが変わった場合のリダイレクトを.htaccessのRewriteEngineを使って処理する方法の解説です。
-
Webサイト公開時に重複コンテンツを排除する.htaccessのリダイレクトの設定のまとめ
サイトを公開する際にはURLの正規化は必須です。正規化とは何かを解説し、.htaccessに設定すべきリダイレクトの設定を具体的に説明します。
-
So-netのレンタルサーバHSはヤバイ・借りてはいけないレンタルサーバリスト
餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、単独でSo-netを紹介。OEMでサービスの提供を受けているだけなので何とも残念すぎる内容。
-
chromedriver.exe – ディスクがありませんと出てSeleniumの設定が上手くいかない
Selenium WebDriverを使ってChromeを自動操作する仕組みを作る際、chromedriver.exeを利用しますが、ディスクがありません、というエラーが発生する場合があります。その対処方法を解説します。
-
PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。
Pythonの標準では日本語(全角文字)を利用できないので、利用する際は文字コードを宣言する必要がある。「# coding: utf-8」の様に記述すればOK。
-
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
Apacheが起動しているかを確認する方法の解説に加え、Apacheの起動、停止、再起動のコマンドを解説。再起動のコマンドには restart、condrestart、reload、gracefulがあり、違いを解説。
-
コピーコンテンツ・直リンクの3つの対策Google通報などのまとめ
コピーコンテンツを発見したときにやること!Googleに通報、画像の直リンクを禁止、RSSの全文配信を停止。この対策をしないとあなたのサイトの評価も下がるかも!