web-dev-qa-db-ja.com

「git add <dir>」を元に戻しますか?

「git add dir」コマンドを使用して誤ってファイルを追加しました。 「git commit」をまだ実行していません。このディレクトリとその中に含まれるすべてのものをコミットから削除する方法はありますか?

git reset dirを試しましたが、うまくいきませんでした。どうやらgit reset fileが元に戻す方法です。しかし、私は非常に多くのファイルと非常に短い時間を持っています。

163
neoneye

ディレクトリとその中のすべてをインデックスから削除するには、

git rm --cached -r dir

--cachedスイッチは、git rmをインデックス上でのみ動作させ、作業コピーには触れません。 -rスイッチにより、再帰的になります。

254

git rm --cached -r <dir>を使用します。このコマンドは、ステージングされたディレクトリの内容をインデックスから削除します。

ディレクトリがすでに追跡されている場合は、新しいファイルと古いファイルを手動で見つけてステージング解除する必要があります…

おそらくgit reset <dir>を実行して、ディレクトリ内の既存の(および既に追跡されている)ファイルをリセットします。


2019年更新:

git reset directoryを実行するだけで、新しく追加されたすべてのファイルのステージングが解除されます。

15
knittl

find および xargs を使用します。

find dir -type f | xargs git reset
11
marcog
$ git reset <dir>

ステージングしたすべてのファイルとフォルダーのステージングを解除します。

$ git add <dir>

上記は、以下で確認されました。

$ git status

または

$ git diff --staged --name-only 

git addコマンドの後、「コミットされる変更」であるファイルとフォルダーを確認します。

Git resetコマンドを実行した後、次を使用しました。

$git diff --staged --name-only

以前にステージングされたフォルダーまたはファイルがまだステージングされていないことを確認します。

6
mrduncle1