セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 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
概要
gitrm[-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がある場合、gitrmd*'とgitrmd/*'の使用には違いがあります。前者はディレクトリd2全体も削除するからです。詳細については、gitglossary[7]の<pathspec>エントリを参照してください。
-f--force-
最新の状態チェックをオーバーライドします。
-n--dry-run-
実際にファイルを削除しません。代わりに、それらがインデックスに存在し、そうでなければコマンドによって削除されるかどうかのみを表示します。
-r-
先頭のディレクトリ名が指定された場合に、再帰的な削除を許可します。
---
このオプションは、コマンドラインオプションとファイルリストを分離するために使用できます(ファイル名がコマンドラインオプションと間違われる可能性がある場合に便利です)。
--cached-
このオプションを使用すると、インデックスからのみパスをアンステージして削除します。作業ツリーのファイルは、変更されているかどうかにかかわらず、そのまま残されます。
--ignore-unmatch-
ファイルが一致しなくても、ステータスゼロで終了します。
--sparse-
スパースチェックアウトコーンの外部にあるインデックスエントリの更新を許可します。通常、
gitrmは、パスがスパースチェックアウトコーン内に収まらないインデックスエントリの更新を拒否します。詳細については、git-sparse-checkout[1]を参照してください。 -q--quiet-
gitrmは通常、削除されたファイルごとに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]スイートの一部