セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
- 2.43.1 → 2.47.0 変更なし
-
2.43.0
11/20/23
- 2.34.1 → 2.42.3 変更なし
-
2.34.0
11/15/21
- 2.32.1 → 2.33.8 変更なし
-
2.32.0
06/06/21
- 2.26.1 → 2.31.8 変更なし
-
2.26.0
03/22/20
- 2.16.6 → 2.25.5 変更なし
-
2.15.4
12/06/19
-
2.14.6
12/06/19
-
2.13.7
05/22/18
- 2.1.4 → 2.12.5 変更なし
-
2.0.5
12/17/14
SYNOPSIS
git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>…]
DESCRIPTION
インデックスから、または作業ツリーとインデックスから、pathspecに一致するファイルを削除します。git rm
は、作業ディレクトリからのみファイルを削除することはありません。(作業ツリーからのみファイルを削除し、インデックスに保持するオプションはありません。それを行う場合は/bin/rm
を使用してください。)削除されるファイルは、ブランチの先端と同一である必要があり、その内容に対する更新をインデックスにステージすることはできません。ただし、そのデフォルトの動作は-f
オプションで上書きできます。--cached
が指定されている場合、ステージされたコンテンツはブランチの先端またはディスク上のファイルのいずれかと一致する必要があり、ファイルはインデックスからのみ削除できます。スパースチェックアウトが使用されている場合(git-sparse-checkout[1]を参照)、git rm
はスパースチェックアウトパターン内のパスのみを削除します。
OPTIONS
- <pathspec>…
-
削除するファイル。先頭のディレクトリ名(例:
dir/file1
とdir/file2
を削除するdir
)を指定して、ディレクトリ内のすべてのファイルと、再帰的にすべてのサブディレクトリを削除できますが、これには明示的に-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>
-
Pathspecは、コマンドライン引数の代わりに
<file>
で渡されます。<file>
が正確に-
である場合は、標準入力が使用されます。Pathspec要素は、LFまたはCR/LFで区切られます。Pathspec要素は、構成変数core.quotePath
(git-config[1]を参照)で説明されているように引用符で囲むことができます。--pathspec-file-nul
およびグローバルの--literal-pathspecs
も参照してください。 - --pathspec-file-nul
-
--pathspec-from-file
でのみ意味があります。Pathspec要素は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]も参照してください。
BUGS
スーパープロジェクトの更新によって、入力されたサブモジュールが削除されるたび(たとえば、削除前後のコミットを切り替える場合)、古いサブモジュールのチェックアウトが古い場所に残ります。古いディレクトリの削除は、gitfileを使用する場合にのみ安全です。そうでない場合、サブモジュールの履歴も削除されます。このステップは、再帰的なサブモジュールの更新が実装された場合に不要になります。
GIT
git[1]スイートの一部