コミットする前に、ワーキングディレクトリでの作業を元に戻したい場合、git checkoutコマンドで戻すことができます。特定のファイルだけ元に戻したい場合はgit checkoutにファイル名を指定します。
構文:
git checkout [ファイル名]
特定のファイルではなく、全てのファイルを元に戻したい場合はgit checkoutにドットを指定します。
git checkout .
実際に試してみましょう。index.phpというファイルを変更し、git statusでブランチを確認すると次のように出力されます。modified: というメッセージで変更されたことが確認できます。
git status
出力結果
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: index.php
no changes added to commit (use "git add" and/or "git commit -a")
ファイル単位ではなく、コミットしていない作業すべてを元に戻すには、git checkout .を使います。
git checkout .
特に何もメッセージは表示されませんが、git statusで確認すると、「nothing to commit, ...」というメッセージが表示され、更新が取り消されたのが確認できます。
git status
出力結果
On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean
新規追加したファイルも消す
git checkoutによる変更の取り消しはファイルの変更を元に戻すだけなので、新規追加されたファイルなどは残ったままになります。それらのファイルも消したい場合はgit cleanコマンドを使います。
git clean -df .
これで追加されたファイルが一通り削除されます。git cleanはインデックスに追加されていないファイルを削除します。ファイルの変更を取り消しはしないので、それらが必要な際はgit checkoutと併用して使ってください。