Gitテックラボ

ワーキングディレクトリの変更を元に戻す

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

関連記事