2013-04-23 12 views
13

Gitの変更(ステージングとアンステージ)を元に戻す最も簡単な方法は何ですか?gitのステージングされた変更とunstagedされた変更を迅速に元に戻す方法は?

両方のファイルがステージングされません。

$ git status -s 
M file1.txt # unstaged 
?? oops.txt # unstaged 

1つのファイルがステージングされ、1つのファイルがステージングされません。

$ git status -s 
M file1.txt # staged 
?? oops.txt # unstaged 

私はできaddインデックスへのすべて、その後stashsavedrop

$ git add . 
$ git stash save 
$ git stash drop 
$ git status 
nothing to commit, working directory clean 

速い方法がありますか?

答えて

23

git reset --hardgit clean -fdの2つのコマンドを使用する必要があります。 git reset --hardはステージングされたすべての変更を元に戻し、git reset -fd、ステージングされない変更(ファイルとディレクトリ)を元に戻します。 2つのコマンドを実行するエイリアスを作成できます。そのためには、ちょうどあなたの.gitconfigに次の行を追加します。

[alias] 
    undo = '!git reset --hard && git clean -fd' 
+2

私は別名 'undo =! 'を追加しました。git reset -hard && git clean -f" ' – hIpPy

+2

nice ..そして、あなたがどこから来たのか疑問に思っているなら、http://stackoverflow.com/questions/10641451/何の意味ですか?-gang-of-the-git-commandの – Calaf

+1

この回答は間違った用語を使用しています。 'git reset --hard' **はすべての変更をスローし、インデックスにステージングし、ワーキングツリーでステージングしません**。 'git clean -fd'は、追跡されない**すべてのファイルとディレクトリを削除します**。たとえば、 '.o'ファイル、configureスクリプトからの' config.make'、 'tags'などのようにローカルで構築されたものです。 – Kaz

5

あなたはgit clean

 
$ git status -s 
?? oops.txt 

$ git clean -f 
Removing oops.txt 

$ git status -s 

詳細情報を使用することができます。

は、再帰的にカレントディレクトリから始めて、 バージョン管理下にないファイルを削除することで作業ツリーをクリーニングします。

+2

私は 'git reset --hard'と' git clean -f'の両方を行う必要があります。 – hIpPy

13
git reset HEAD 
git checkout . 

git reset HEADは、すべての変更と `Gitのチェックアウトをunstageます「。すべての変更を破棄します。

関連する問題