200

gitで最後にステージングされた (コミットされていない) 変更をステージング解除することは可能ですか? 現在のブランチに多くのファイルがあり、ステージングされているものとステージングされていないものがあるとします。ある時点で、愚かなプログラマーが誤って実行しました:

git add -- .

...それ以外の:

git checkout -- .

このプログラマーは、魔法のgitコマンドを使って最後の変更をステージング解除できますか? それとも、そもそも実験する前にコミットすべきだったのでしょうか?

4

9 に答える 9

309

使用できますgit reset。これにより、最後のコミット後に追加したすべてのファイルが「アンステージ」されます。

一部のファイルのみステージングを解除する場合は、git reset -- <file 1> <file 2> <file n>.

を使用して、ファイルの変更の一部をアンステージすることもできますgit reset -p

于 2012-08-26T17:59:35.023 に答える
42

最新のgit add を元に戻すことはできませんがadd、最後のコミット以降のすべての s を元に戻すことはできます。git resetcommit 引数を指定しないと、インデックスがリセットされます (ステージングされた変更がアンステージされます)。

git reset
于 2012-08-26T17:39:25.977 に答える
6

使用できますgit resetドキュメントを参照)

于 2012-08-26T17:39:32.423 に答える
3

日付のgitプロンプトで:

  1. use "git rm --cached <file>..." to unstageファイルがリポジトリにない場合。ファイルをステージング解除し、そこに保持します。
  2. use "git reset HEAD <file>..." to unstageファイルがリポジトリにあり、それらを変更済みとして追加している場合。ファイルをそのまま保持し、ステージングを解除します。

私の知る限り、元に戻すことはできませんがgit add --、上記のようにファイルのリストをアンステージすることはできます。

于 2016-04-06T20:25:59.950 に答える
0

難しいサイズと規模によっては、スクラッチ(一時的な)ブランチを作成し、そこで現在の作業をコミットすることができます。

次に、元のブランチに切り替えてチェックアウトし、スクラッチコミットから適切なファイルを選択します。

少なくとも、現在および以前の状態の永続的な記録があります(そのスクラッチブランチを削除するまで)。

于 2012-08-27T13:06:33.653 に答える