セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.50.1 変更なし
-
2.50.0
2025-06-16
- 2.43.1 → 2.49.1 変更なし
-
2.43.0
2023-11-20
- 2.34.1 → 2.42.4 変更なし
-
2.34.0
2021-11-15
- 2.32.1 → 2.33.8 変更なし
-
2.32.0
2021-06-06
- 2.26.1 → 2.31.8 変更なし
-
2.26.0
2020-03-22
- 2.16.6 → 2.25.5 変更なし
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
- 2.1.4 → 2.12.5 変更なし
-
2.0.5
2014-12-17
概要
git
rm
[-f
|--force
] [-n
] [-r
] [--cached
] [--ignore-unmatch
] [--quiet
] [--pathspec-from-file=
<file> [--pathspec-file-nul
]] [--
] [<pathspec>…]
説明
pathspec に一致するファイルをインデックスから、または作業ツリーとインデックスから削除します。git
rm
は作業ディレクトリからのみファイルを削除しません。(ファイルを作業ツリーからのみ削除し、インデックスには残すオプションはありません。その場合は/bin/rm
を使用してください。) 削除されるファイルはブランチの先端と同一である必要があり、内容の更新がインデックスにステージングされていない必要がありますが、このデフォルトの動作は-f
オプションでオーバーライドできます。--cached
が指定された場合、ステージングされた内容はブランチの先端またはディスク上のファイルのいずれかと一致する必要があり、ファイルがインデックスからのみ削除されることを許可します。スパースチェックアウトが使用されている場合 (git-sparse-checkout[1]を参照)、git
rm
はスパースチェックアウトパターン内のパスのみを削除します。
オプション
- <pathspec>...
-
削除するファイル。先行するディレクトリ名 (例:
dir
を指定してdir/file1
とdir/file2
を削除) を指定すると、ディレクトリ内のすべてのファイルとそのサブディレクトリすべてを再帰的に削除できますが、これには-r
オプションを明示的に指定する必要があります。このコマンドは、Git に認識されているパスのみを削除します。
ファイルグロビングはディレクトリ境界をまたいで一致します。したがって、2つのディレクトリ
d
とd2
がある場合、git
rm
d*'
とgit
rm
d/*'
の使用には違いがあります。前者はディレクトリd2
全体も削除するからです。詳細については、gitglossary[7]の<pathspec>エントリを参照してください。
-f
--force
-
最新の状態チェックをオーバーライドします。
-n
--dry-run
-
実際にファイルを削除しません。代わりに、それらがインデックスに存在し、そうでなければコマンドによって削除されるかどうかのみを表示します。
-r
-
先頭のディレクトリ名が指定された場合に、再帰的な削除を許可します。
--
-
このオプションは、コマンドラインオプションとファイルリストを分離するために使用できます(ファイル名がコマンドラインオプションと間違われる可能性がある場合に便利です)。
--cached
-
このオプションを使用すると、インデックスからのみパスをアンステージして削除します。作業ツリーのファイルは、変更されているかどうかにかかわらず、そのまま残されます。
--ignore-unmatch
-
ファイルが一致しなくても、ステータスゼロで終了します。
--sparse
-
スパースチェックアウトコーンの外部にあるインデックスエントリの更新を許可します。通常、
git
rm
は、パスがスパースチェックアウトコーン内に収まらないインデックスエントリの更新を拒否します。詳細については、git-sparse-checkout[1]を参照してください。 -q
--quiet
-
git
rm
は通常、削除されたファイルごとに1行 (rm
コマンドの形式) を出力します。このオプションは、その出力を抑制します。 --pathspec-from-file=
<file>-
パススペックは引数ではなく<file>で渡されます。<file>が正確に
-
の場合は標準入力が使用されます。パススペック要素はLFまたはCR/LFで区切られます。パススペック要素は設定変数core.quotePath
で説明されているように引用符で囲むことができます(git-config[1]を参照)。--pathspec-file-nul
とグローバルな--literal-pathspecs
も参照してください。 --pathspec-file-nul
-
--pathspec-from-file
との組み合わせでのみ意味があります。パススペック要素はNUL文字で区切られ、他のすべての文字はリテラルとして扱われます (改行や引用符を含む)。
ファイルシステムから消失したファイルを削除する
git
rm
には、ファイルシステムから消失したパスのみをインデックスから削除するオプションはありません。しかし、ユースケースによっては、いくつかの方法でそれを行うことができます。
「git commit -a」を使用する
次のコミットで、作業ツリー内の追跡対象ファイルのすべての変更を記録し、作業ツリーからrm
(つまりgit
rm
とは対照的に) で削除されたファイルのすべての削除を記録するつもりである場合、git
commit
-a
を使用してください。これは、すべての削除を自動的に認識し記録します。また、git
add
-u
を使用してコミットせずに同様の効果を得ることもできます。
「git add -A」を使用する
ベンダーブランチの新しいコードドロップを受け入れる際、パスの削除、新しいパスの追加、既存のパスの変更の両方を記録したいと考えるでしょう。
通常、まず次のコマンドを使用して作業ツリーからすべての追跡対象ファイルを削除します。
git ls-files -z | xargs -0 rm -f
そして、新しいコードを作業ツリーにアンタールします。または、変更を作業ツリーに rsync することもできます。
その後、作業ツリー内のすべての削除、追加、変更を記録する最も簡単な方法は次のとおりです。
git add -A
git-add[1]を参照してください。
サブモジュール
gitfile を使用するサブモジュール (Git バージョン 1.7.8 以降でクローンされたことを意味します) のみが作業ツリーから削除されます。これは、そのリポジトリがスーパープロジェクトの .git
ディレクトリ内に存在するためです。サブモジュール (またはその中にネストされたもの) がまだ .git
ディレクトリを使用している場合、git
rm
はサブモジュールの git ディレクトリをスーパープロジェクトの git ディレクトリに移動して、サブモジュールの履歴を保護します。存在する場合、gitmodules[5]ファイル内の submodule.
<name> セクションも削除され、そのファイルはステージングされます (ただし、--cached
または -n
が使用されていない場合)。
サブモジュールは、HEAD
がインデックスに記録されているものと同じであり、追跡対象ファイルが変更されておらず、無視されない追跡対象外ファイルがサブモジュールの作業ツリーに存在しない場合に最新であると見なされます。無視されたファイルは消耗品と見なされ、サブモジュールの作業ツリーの削除を停止させることはありません。
コミットせずに作業ツリーからサブモジュールのローカルチェックアウトのみを削除したい場合は、代わりにgit-submodule[1] deinit
を使用してください。サブモジュールの削除の詳細については、gitsubmodules[7]も参照してください。
バグ
スーパープロジェクトの更新によって、データが格納されたサブモジュールが削除されるたびに(例えば、削除前と削除後のコミットを切り替えるときなど)、古い場所に陳腐化したサブモジュールのチェックアウトが残ります。古いディレクトリの削除は、gitfileを使用している場合にのみ安全です。そうしないと、サブモジュールの履歴も削除されてしまいます。このステップは、再帰的なサブモジュール更新が実装されたときに廃止されます。
GIT
git[1]スイートの一部