変更を元に戻す
作業を進めていくと、「ファイルを変更したけど、やっぱり元に戻したい」ということや、
「コミットをしたけど無かったことにしたい」ということがあると思います。
このような場合も Git コマンドを駆使することで解消することができます。
ファイルの変更を取り消したい(git add をしていない場合)
git checkout
コマンドでファイルの変更を取り消すことができます。
git checkout というと、応用編のブランチの切り替えのときに登場しましたね。
この git checkout コマンドは、特定のブランチやコミットに切り替えたり、特定のコミットからファイルを取り出したりすることができます。
git checkout [変更を取り消したいファイルのパス]
ステージングエリアへの追加(git add)を取り消したい
追加する必要のないファイルまで間違って git add してしまった場合(かつ、まだ commit はしていない場合)は以下のコマンドを実行することで git add を取り消せます。
ただ、厳密には git reset
コマンドは git add を取り消すコマンドではなく、ステージングエリアをHEAD(最後にコミットした時の状態)にするコマンドです。
git reset [git add を取り消したいファイルのパス]
コミットを取り消したい
コミットを取り消したい場合はgit revert
コマンドを実行しましょう。
以下のようにコマンドの後に取り消したいコミットのID(ハッシュ値)を指定します。
※コミットのID(ハッシュ値)はgit log
で確認しましょう。
git revert [取り消したいコミットID]
このコマンドを実行すると、指定したコミット時点の状態まで作業ディレクトリを戻します。
また、「コミットを取り消した」というコミット履歴が残ります。
このコミット履歴をリモートリポジトリにアップロードすることで、他のチームメンバーも取り消したコミットが見えなくなります。
他にも git reset コマンドでコミットを取り消すことができますが、このコマンドでコミットを消すと「コミットを取り消した」というコミット履歴が残りません。 一見使い勝手が良いように感じますが、リモートリポジトリで公開されているコミットに対して行うとリモートリポジトリにプッシュができなくなるという事象が起きるので注意が必要です。