gitステージング領域からファイルを削除する方法


551

ローカルリポジトリの一部のファイルに変更をgit add -A加えた後、ステージング領域に追加したファイルが多すぎると思いました。ステージング領域からすべてのファイルを削除するにはどうすればよいですか?

その後、手動で行いますgit add "filename"


2
:うまくいけば、この探しているstackoverflow.com/questions/1505948/...
sumitb.mdi

27
git statusファイルのステージングを解除する場合の対処法は、すでに正確に指示されています。
Michael Foukarakis 2013年

6
@MichaelFoukarakis git statusは、ターミナル全体が出力(node_modulesなど)で溢れている場合にディレクトリ全体をステージング解除したい場合、それほど役に立ちません
whiterook6

2
将来的には、すべてを追加するのではなく、git add -por git add --patch(または同じ)に慣れることをお勧めします。このフラグを使用すると、ステージングするファイルまたは個々の変更を対話形式で選択できます。コミットに含める作業をより詳細に取得できます。
Gabe

回答:


691

以下を使用して、インデックスからファイルをアンステージできます。

git reset HEAD -- path/to/file

と同様にgit add、ディレクトリごとに再帰的にファイルをステージング解除することができます。したがって、一度にすべてをステージング解除するには、リポジトリのルートディレクトリから次のコマンドを実行します。

git reset HEAD -- .

また、将来の参照のために、の出力git statusから、ファイルをある状態から別の状態に移動するために実行する必要があるコマンドがわかります。


5
$ git reset HEAD -- .生産fatal: Failed to resolve 'HEAD' as a valid ref.私は、任意のコミットやったことがないことを注意します。その最初のgit addgit init
パトリツィオベルトーニ2015

5
も使用できますgit reset @
アレックス

@alexそれは単なるプレーンより良いgit resetですか?
アントニーハッチキンズ2016

7
@AntonyHatchkinsはと@同義HEADです。
アレックス、

本当に私のために働いた、ありがとう!
wayneseymour

305

使用する

git reset

すべてのステージングされたファイルをアンステージングします。


3
これがどのように違うのgit reset HEAD --か、それとも同じ操作を実行するより簡潔な方法ですか?
ProNotion 2018年

1
@ProNotion ResetはHEADデフォルトで使用します。これらの目的は何ですか--、あなたの中にはgit reset HEAD --
Antony Hatchkins、

@AntonyHatchkinsの後に完全停止(ピリオド)が続くはずであり、受け入れられた回答の例から取得されました。
ProNotion 2018年

11
@ProNotionすみません、あなたを誤解しました。プロジェクト内のすべてのファイルgit reset HEAD -- .git resetリセットしながら、現在のディレクトリ以下のファイルのみをリセットするという点で異なります。
アントニーハッチキンズ

101

不要なファイルの束をすでにコミットしている場合は、それらアンステージングして gitに(実際にそれらを削除せずに)削除済みとしてマークするように指示 できます。

git rm --cached -r .

--cachedファイル自体を削除せずにステージングとインデックスからパスを削除するように指示-rし、ディレクトリを再帰的に操作します。その後git add、追跡したいファイルをすべて選択できます。


「git rm-」だと思います。
Alexander Mills

1
「git rm-」でファイルを削除しないと、致命的なエラーが発生します。
Alexander Mills

@AlexMills rmすべてのファイルをステージング解除するための実際のオプションについて言及するために、回答を更新します。
最大

2
「git rm --cached my / file.java」のような単一のファイルでこれを試しましたが、そのファイルはまだステージング領域にありますが、削除されたままです。@Maxこのコマンドを実行すると、ファイルは実際に削除されているのですか、それともステージングされていませんか?あなたがその振る舞いを探していないなら、私は答えに行くでしょう。
OrwellHindenberg

@OrwellHindenberg指摘してくれてありがとう!--cachedすでにコミットしたファイルの追跡を停止することです。そのため、ファイルは実際には削除されませんが、gitはそれが削除されたと考えています。私は私の答えでこれを明確にしました。
最大

30

あなたは使うことができます

git reset HEAD

次に、必要な特定のファイルを追加します

git add [directory/]filename

-xパラメータを追加すると、無視されたファイルも削除されます。(私の場合のように).gitignoreをめちゃくちゃにして、そこに何か便利なものがあれば便利です。(git-scm.com/docs/git-clean
Keeprock

1
過剰フォルダを使用すると、git statusあなたを教えてくれるきれいな作業ディレクトリ嘘を- !git clean -dfありがとうございます。
レオ

5
git clean -dfファイルが完全に削除されることに注意してください。UNIXライクなシステムでは、それが呼び出さunlink()れ、削除されたファイルは回復できません。
Hanxue、2016年

11
OPはファイルのステージング解除について尋ねます。あなたは彼にファイルを削除するように勧めます。回答する前に、ステージングエリアについて読んでおくことをお勧めします。
アントニーハッチキンズ2016

保存していないプロジェクト全体を削除していただき、ありがとうございます。
Vansuita Jr.

7

他の回答で述べたように、を使用する必要がありますgit reset。これにより、のアクションが取り消されgit add -Aます。

注: git reset同等であることがgit reset --mixedこれを行います

インデックスをリセットしますが、作業ツリーはリセットしません(つまり、変更されたファイルは保持されますが、コミットのマークは付けられません)。更新されていないものを報告します。これがデフォルトのアクションです。[ git reset ]


2
..そして、ステージング領域から単一のファイルを削除するには、次のようにしますgit reset filenameToNotCommit
SherylHohman

5

今v2.24.0で示唆しています

git restore --staged .

ファイルをアンステージングします。


1

ステージング領域はいくつかの方法でリセットできます。

  1. HEADをリセットし、必要なすべてのファイルを追加して、以下のように再度チェックインします。

     git reset HEAD ---> removes all files from the staging area
     git add <files, that are required to be committed>
     git commit -m "<commit message>"
     git push 
    

この回答と既存の6つの回答の違いは何ですか?
アントニーハッチキンス2018

1

ステージング領域の使用からすべてのファイル
git reset
を削除するには-特定のファイルの使用を削除するには-
git reset "File path"


1

使用する

git reset HEAD

これにより、ステージング領域からすべてのファイルが削除されます


1

不要なファイルがステージング領域に追加されたがまだコミットされていない場合は、単純なリセットでうまくいきます。

$ git reset HEAD file
# Or everything
$ git reset HEAD .

現在の作業ディレクトリにあるステージされていない変更のみを削除するには、次のコマンドを使用します。

git checkout -- .

0

git reset HEAD <file>...」を使用してフィルをアンステージします

ex:すべてのファイルをステージング解除する

git reset HEAD .

1つのファイルのステージを解除するには

git reset HEAD nameFile.txt

-3

私はこれらすべての方法を試しましたが、どれもうまくいきませんでした。rm -rf .gitローカルリポジトリのフォームを使用して.gitファイルを削除してgit initからgit add、andコマンドとルーチンコマンドを再度実行しました。動いた。


4
git docsを読むことは、一般的にxkcd.com/1597からのアドバイスに従うよりもやりがいがあります;)
アントニーハッチキンス

1
おそらく、特定のケースで整合性の問題があり、これが残されたオプションでしたが、それはお勧めできません。
Shad

これを行わないでください。gitリポジトリ全体が破壊されます。
Lennart Rolland

-5

ステージング領域にすでにあるファイルを元に戻す最善の方法は、ステージングされたファイルを元に戻す git reset --hard です。今は注意してください。これにより、段階的変更と段階的でない変更が削除されます。


2
これは間違っていて危険です!!! OPは後でファイルを「手動で追加」するだけで--hard完全に削除したいと考えています。
アントニーハッチキンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.