コミットする前に、ワーキングディレクトリでの作業を元に戻したい場合、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と併用して使ってください。