はじめに

サメさん!gitの操作方法をもっと教えてよ!

git使うことに慣れてきて自信が付いてきたようだね!
よし、それじゃあ今日はgit rmコマンドについて説明しよう!

git rm?
なんかLinuxでもありそうなコマンドだね。

お、鋭いね。
今回はgit rmコマンドがgitにおいてどういう挙動をするかを確認しながら理解していこう!
git rmコマンドのポイント
- ファイルを削除したい時に使う
- ファイルの削除がステージングエリアに反映される。
- rmコマンドと違い、ステージングエリアに反映させるのでそのままgit commitできる。


違いはステージングエリアに最初から反映されているかどうかってことかな?

その通り!
まぁrmコマンドをしてgit add, git commitの流れでできるんだけど、git rmコマンドを使うことでgit addの処理を短縮できるんだ。

せっかくだから流れを見ていこう!
git rmコマンドの動きの確認
前提

まず、今僕のディレクトリ構造について説明するね。
sampleディレクトリにa, b, cのファイルが存在する形だよ。

ふむふむ!
僕も作ってみるね!
$mkdir ~/sample
$cd ~/sample
$touch a b c
$git init
$git add .
$git commit -m "first commit"
$pwd
~/sample
$ ls
a b c

バッチリgit 使いこなしているね!。
rmコマンドで削除する。

まずはrmコマンドでaというファイルを削除する。。
$pwd
~/sample
$ rm a

その次にgit statusコマンドで差分を確認しよう。
$git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: a
no changes added to commit (use "git add" and/or "git commit -a")

できたよ!
git addかもしくはgit commit -aしてね
って言われているね。

その通りだね!
つまりこれはどういうことか説明できる?

うーん。
Change not staged for commit
って書いてあるからステージングエリアにいないってことかな?

素晴らしい!まさにその通りだよ!
だから削除を反映させるためにはgit addでステージングエリアに登録しなきゃいけないんだ。
$git add .
$git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: a

おおお!
これでChanges to be committed
ってなったからcommitできるようになったんだね!

あとはcommitして完了だよ。。
$git commit -m "Remove a file"
git rmコマンドでファイルを削除する。

今度はgit rmコマンドでファイルを削除してみよう。
$git rm b
$git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: b

おおお!
確かに最初からChanges to be committed
になっているからステージングエリアに登録されているんだね!

その通り!
だからこのままgit commitで変更を反映させることができるんだ。
$git commit -m "Remove b file"
終わりに

サメさんありがとう!
新しいgit rmコマンドを使えるようになったよ!

よかった!gitリポジトリがある状態でファイルを削除するときは積極的にgit rmコマンドを使うといいよ!

まぁ、色々変更点が多くてgit addするの忘れていたり、時間がなかったりしたらステージングエリアに登録されていないファイルがたくさん残っているからね。
まとめて git add .でステージングエリアに登録したりすることもあったりなかったり・・・

週末の土曜のぐちゃぐちゃの部屋みたいな感じってことね。
僕結構溜めちゃいがちだなぁ・・・

できるだけ、ファイルの変更も管理していったほうがいいね!

git rmコマンドについてはこの技術書が役にたつかも!