git rm は、指定したファイルを ステージングエリアと作業ツリーから削除 するコマンドです。
次のコミットでファイル削除を記録したいときや、追跡だけをやめたいとき(--cached)に利用します。
構文(Syntax)
git rm [オプション] <パス>...
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
<パス> | 指定ファイル/パスを削除(ステージにも反映) | git rm config.yml |
-r | ディレクトリを再帰的に削除 | git rm -r dist/ |
-f, --force | 変更済み/ステージ済みでも強制削除 | git rm -f data.csv |
--cached | 追跡のみ解除(作業ツリーのファイルは残す) | git rm --cached .env |
-n, --dry-run | 実際には削除せず、対象のみ表示 | git rm -n *.log |
-q, --quiet | メッセージを抑制 | git rm -q temp.txt |
--ignore-unmatch | 該当なしでもエラーにしない | git rm --ignore-unmatch notfound.txt |
実行例
単一ファイルを削除して次コミットに反映
git rm README.md
git commit -m "Remove README"
ディレクトリを再帰的に削除
git rm -r build/
git commit -m "Remove build artifacts"
作業ツリーには残し、追跡だけをやめる(.gitignore と併用)
git rm --cached .env
echo ".env" >> .gitignore
git commit -m "Stop tracking .env"
削除対象を事前確認(ドライラン)
git rm -n *.log
出力例:
rm 'app.log'
rm 'server.log'
エラー例(未保存の変更があるファイルを通常削除)
git rm report.docx
出力例:
error: the following file has local modifications:
report.docx
(use --cached to keep the file, or -f to force removal)
関連コマンド
git restore --staged <path>: ステージから削除変更を取り消す。git reset <path>: ステージから外す(旧来の方法)。git add: 変更の追加(削除も「削除として」ステージされる)。
備考
git rmは 削除をステージ する操作です。履歴に反映するにはコミットが必要です。- 未コミットの変更があるファイルは、通常は削除を拒否されます。どうしても削除する場合は
-fを使用します。 --cachedは「追跡解除」用途で便利(大きなファイルを誤って追加した・シークレットを除外したい等)。必要なら.gitignoreにも追加しましょう。- グロブ(
*.logなど)のパス指定はシェルに解釈されるため、意図しない展開に注意してください。
参考
- Git 公式ドキュメント: https://git-scm.com/docs/git-rm

コメント