Git

【Git】ファイルやディレクトリを削除する方法|git rmコマンド

本記事では、Gitでファイルやディレクトリを削除することができる、git rmコマンドについて詳しく解説しています。

先輩くん
先輩くん
Gitのインストールをしていない人はこちらの記事を参考にしてください!

Gitの学習におすすめ参考書
改訂2版 わかばちゃんと学ぶ Git使い方入門

本書情報
著者湊川 あい
発売日2021/6/12
ページ数280ページ
Kindle版
レビュー
(Amazon)
(84件)

参考書が苦手な人はUdemyの動画がおすすめ
もう怖くないGit!チーム開発で必要なGitを完全マスター

動画情報
作成者山浦 清透
学習時間5.5時間
受講者数40,161人
レビュー (7,512件)
動画の詳細はこちら

git rmコマンドの使い方

git rmとは、ファイル・デイレクトリを削除することができるコマンドです。
一般的なファイル・ディレクトリの削除は手元にあるものを削除するだけですが、git rmコマンドでファイル・ディレクトリを削除する場合「ワークツリー(手元)」と「リポジトリ」の2つから削除します。

まず始めにファイル削除のコマンドは以下の通りです。
git rm ファイル名
次にディレクトリ削除のコマンドは以下の通りです。
git rm -r ディレクトリ名

実際にgit rmコマンドを使ってファイル削除する

実際にgit rmコマンドを使ってファイル削除していきましょう。
今回はindex.htmlがワークツリーとリポジトリにある状態で解説していきます。

まずは、lsコマンドを使って何のファイルがあるか確認します。
ls

index.html	style.css

「index.html」と「style.css」のファイルがあることが確認できます。

次にgit rmコマンドを使ってindex.htmlファイルを削除します。
git rm index.html

これで、index.htmlワークツリーとリポジトリから削除されました。
本当に削除されたか確認していきましょう。

まずはワークツリーから削除されたか確認するには、先程と同様に「ls」コマンドを実行します。
ls

style.css

削除前は「index.html」と「style.css」の2つありましたが、今回はstyle.cssのみ表示がされているのでワークツリーからindex.htmlが削除されたのが確認できます。

次にリポジトリからファイルが削除されているか確認するには「git status」コマンドを実行します。
git status

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	deleted:    index.html
最後にステージに記録されているファイル削除を「git commit」コマンドを使ってコミットします。
git commit -m "delete index.html"

以上が、git rmコマンドの一連の流れになります。

git rmコマンドの便利なオプション

ワークツリー内のファイルだけ残す

Gitで管理しないファイルをリポジトリにアップしてしまった場合、通常のgit rmコマンドではワークツリーのファイルも削除されてしまうため使えません。
このようにリポジトリのみ削除して、ワークツリー内のファイルだけを残したい場合は「–cached」オプションを使いましょう。

今回は、パスワードが記載されている「pw.txt」ファイルを間違えてリポジトリにアップしてしまった場合で解説します。
git rm --cached pw.txt
「ls」コマンドでワークツリーにpw.txtファイルが残っている確認します。
ls

pw.txt
次にリポジトリの状態を「git status」コマンドで確認します。
git status

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	deleted:    pw.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	pw.txt

Changes to be committed:」とは、リポジトリからpw.txtファイルが削除された記録がステージにある状態のことを指しており、「Untracked files:」は未追跡のファイルがあるワークツリー内にあることを指しています。
この未追跡のファイルとはpw.txtファイルのことでリポジトリからファイルが削除されているためGitではワークツリー内に新しいファイルがあるという認識になっています。

最後にステージに記録されているものをコミットして完了です。
git commit -m "delete pw.txt"

リポジトリに反映させたくないものは、「.gitignore」ファイルに記述することで事前に防ぐことができます。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村