WEB開発 Git GitHub 非エンジニア向け

【GitHub】Gitの管理対象からファイルを削除する「rm」コマンド

こんにちは、TAKです。
今回は、gitコマンドの一つである「rm」について紹介していきたいと思います。

「rm」は「remove」の略で、ファイルやディレクトリを取り除く(削除する)という意味になります。
使う頻度自体はさほど多くないですが、「Gitの管理対象となっているファイルやディレクトリを削除したい」といった時に使える方法なので、いざという時のために知っておくと便利です。

【こんな人に読んで欲しい記事です】

● Gitの「rm」コマンドで、Git管理対象からファイル等を削除出来るようになりたい方

● GitHubで使われている基本的なコマンドを学んでいきたい方

今回は、ローカルでファイルを新規作成してコミットした状態から、「git rm」コマンドを使って挙動を確認していきます。

【GitHub】Git管理されているファイルを削除する「rm」コマンド

【事前準備】ファイルの新規作成 → git add → git commit

まず最初に、新規のテキストファイル「password.txt」を作成しておきます。
過去記事の名残でいくつかファイルが存在していますが、以下のようにファイルを追加します。

テキストファイルの新規作成

ファイルを新規作成した状態で「git status」コマンドを入力すると、以下のように表示されます。

新規ファイル作成後に「git status」コマンドを入力

メッセージ内に「Untracked files」とありますが、これはステージに追加されていない「Gitで未追跡状態」のファイルを意味します(「git add」コマンドでステージに追加することで管理対象になります)。

そして、今作成したテキストファイルを間違ってコミットしてしまったとします。

「password.txt」のファイルを誤ってコミットした状態

このような時に、「git rm」コマンドを用いることでファイルを削除することが可能になります。
この後紹介する「git rm」コマンドの挙動を簡単にまとめたイメージが以下となります。

● 「git rm <ファイル名>」 : ワークツリーとステージからファイルを削除

● 「git rm –cached <ファイル名>」 : ステージからのみファイルを削除

※ リポジトリから削除するためには、別途「git commit」する必要アリ

【git rmコマンド①】デフォルト(オプション指定なし)

では実際に「git rm」コマンドを使ってみましょう。
削除したいファイル名は「password.txt」なので、このファイルを指定します。

「git rm」コマンド|デフォルト時

すると、ステージだけでなく、ワークツリー(作業フォルダ)からもファイルが削除されていることが確認出来ます。メッセージ部分に「コミットすべき変更があるよ」と表示されているので、このことからもファイル削除の記録がステージまで反映されていることがわかります。

言い換えれば、リポジトリの内容はまだ消えていないので、削除したい場合には「git commit」をする必要があります。その結果が以下となります。

「git rm」後に「git commit」を追加し、リポジトリからファイルを削除

これがオプションを指定しないで「git rm」コマンドを使った場合の挙動となります。

【git rmコマンド②】「– cached」オプション

続いて、オプション「– cached」を付けた場合を見ていきましょう。
先ほどはローカルで作成したファイルまで消えてしまったので、ローカルファイルは残しつつも、ステージやリポジトリからは削除したい時に使える方法です。

先ほど「git rm」コマンドを使用した場面で、「– cached」を付けた結果が以下となります。

「git rm」コマンド|「–cached」オプション

メッセージ部分を確認してみると、「コミットすべき変更があるよ」「追跡出来てないファイルがあるよ」の2つが表示されていて、先ほどの内容とは異なっていることがわかります。

また、ワークツリー(作業フォルダ)にも「password.txt」が消えずに残っているので、コッチの方が使い勝手はいいかもしれませんね。リポジトリからも削除したい場合は、先ほどと同様に「git commit」するようにしてください。

まとめ

いかがだったでしょうか?

今回は、ファイルやディレクトリを削除出来る「git rm」コマンドについて紹介してきました。
ファイルを削除する方法を中心に紹介してきましたが、ディレクトリの場合には「git rm -r <ディレクトリ名>」とすることで削除することが出来ます。

コミット後に削除したいファイル等があるような時には、「git rm」を使うようにしてみてください。
では今回はこのへんで。