なぜ「rm」の代わりに「git rm」を使用してファイルを削除するのですか?


171

SVNでは、(svnを使用するのではなく)ファイルシステムから直接何かを削除すると、頭痛の種がたくさん発生しました。

を使用するときにこれが問題になることはわかりませんがgit、gitには独自のrm実装があることに気付きました(git rm)。

違いは何であるrmとはgit rm

回答:


253

だけを使用するrm場合は、でフォローアップする必要がありますgit add <fileRemoved>git rmこれを1つのステップで実行します。

git rm --cachedwhichを使用してファイルをインデックスから削除し(次のコミットで削除するためにステージングする)、ローカルファイルシステムにコピーを保持することもできます。


いい答えだ。git reset --hardコミットしていない変更がないことを知っていたので、使用してマスターのチェックアウトを実行して、デタッチされたヘッドの状態から抜け出すことができました。変更をコミットしていない場合は、git stashを実行することをお勧めしますが、私はgitを初めて使用するため、正確なコマンドがわかりません。2014年以降にここに来た場合は、この回答がお役に立てば幸いです。
Eric Hepperle-CodeSlayer2010

@Andy- rm(の代わりにgit rm)を使用し、それを使用して多くのファイルを削除し、gitそれらを追跡したくない場合。変更を元に戻す方法はありますか?そもそも使っていなかったので外しgitたまま踏みたい。rmgit rm
Chetan Arvind Patil、2018年

これがオンラインのドキュメントで明確に綴られていればいいでしょう(あるかもしれませんが、明白ではないか、この質問はされていません)。ユーザーがOSのrmルートを使用する場合、何も問題がないことを知っていると便利です。そして、OSのルートに行く理由があります。たとえば、変更をコミットする前に何かが機能することをテストするためにファイルを削除する必要がある場合、OSのルートはgit rmを使用するよりも少し安全です。フェッチする(私は信じています)。
ボブ

12

を使用してファイルを削除することrm自体は問題ではありませんが、ファイルが削除されたことをコミットしたい場合は、git rmとにかく実行する必要があるため、すぐに実行することもできます。

また、シェルによってはgit rm、ファイルを削除した後に行うと、タブ補完を取得できないため、パスを自分で綴る必要がありますがgit rm、ファイルがまだ存在している場合、タブ補完は通常どおり機能します。


7

git rmインデックスと作業ディレクトリ(使用した場合はインデックスのみ--cached)からファイルを削除し、削除が次のコミットのためにステージングされるようにします。


4

ただし、git rmではなくrmを使用することになった場合。git addをスキップして、次のコマンドを使用して変更を直接コミットできます。

git commit -a


3

インデックスから、または作業ツリーとインデックスからファイルを削除します。git rmは、作業ディレクトリからのみファイルを削除しません。

以下を使用rm -fしてファイルを削除し、インデックスから削除する方法を示します。git rm

$ rm -f index.html
$ git status -s
 D index.html
$ git rm index.html
rm 'index.html'
$ git status -s
D  index.html

ただし、これを一度に行うことができます git rm

$ git status -s
$ git rm index.html
rm 'index.html'
$ ls
lib vendor
$ git status -s
D  index.html

2

git rmを使用する場合、削除は次のコミットの一部になります。したがって、変更をプッシュしたい場合は、git rmを使用する必要があります


2

アンディの答えに加えて、追加のユーティリティがありますgit rm

  1. 安全性:のgit rm代わりに実行すると、ファイルrmHEADバージョンとステージングインデックスまたは作業ツリーのバージョンの間に不一致がある場合、Gitは削除をブロックします。このブロックは、進行中の変更が削除されないようにするための安全メカニズムです。

  2. 保護git rm --dry-run。このオプションは、git rmコマンドを実行するが実際にはファイルを削除しない安全策です。代わりに、削除したファイルを出力します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.