Mile Stones

駆け出しのWebデザイナーが知って得した情報を紹介します。

Web Design / Frontend / Backend / Code Management

Gitでの変更の取り消し方

f:id:yonetggp:20190324204934j:plain
Gitでバージョン管理をしているとステージしちゃったけど元に戻したい、コミットしちゃったけどやっぱりやり直したいという状況になることがあると思います。今回はそんな時にどうすれば良いのか解説していきたいと思います。

Gitを使っていて変更を取り消すケースは大きく分けて3パターンあります。

  • 作業中の変更を取り消す
  • ステージしたファイルを取り消す
  • コミットしたファイルを取り消す

作業中の変更を取り消す

作業中のファイルを取り消すには git checkout コマンドを利用します。最後のコミットから作業をしてステージするまでにやっぱり初期状態(最後にコミットした状態)に戻そうと思った時に使えます。まず、変更を加えたファイルを戻す場合は 'git checkout --' 以降に変更したファイル名を記述します。ファイルではなくディレクトリーで指定したい場合はディレクトリーを記述してください。とりあえず変更があったファイル全てを戻したい場合は 'git checkout -- .' と ピリオドを最後に打ちます。

$ git checkout -- <ファイル名>
$ git checkout -- <ディレクトリー名>
$ git checkout -- .

ステージしたファイルを取り消す

作業してステージした後からやっぱりステージを取り消したいと思った時には git reset コマンドを利用します。先ほどの git checkout と同じようにファイルを指定する場合は 'git reset HEAD -- ' 以降にファイル名を記述し、ディレクトリーの場合や全変更を対象とする場合も同じロジックです。ポイントは git reset してもステージの解除が行われるだけで、ファイルの内容は戻らないというところです。もし、ファイルの変更内容も戻したい場合は git reset した後、 git checkout をしましょう。実のところこのコマンドは git add した後(ステージした後)に git status すると (use "git reset HEAD ..." to unstage) と アンステージする場合はこのコマンド使ってねとTipsを表示してくれています。コマンドなんだっけと思った時には git status してみましょう。

$ git reset HEAD -- <ファイル名>
$ git reset HEAD -- <ディレクトリー名>
$ git reset HEAD -- .

コミットしたファイルを取り消す

コミットした後にやっぱり取り消したいと思った時には以下のコマンドを利用します。直前のコミットを修正したいとなった時はまず修正作業を行い、一旦保存してから再度ステージします。ここで 'git commit --amend' を打ち込みます。するとエディタが立ち上がりますので、コミットのコメントを書き直して保存すれば完了です。この 'git commit --amend' はコミットしたコメントを書き直したい場合などでも利用することができます。
(*リモートリポジトリに一度プッシュしたコミットは取り消してはいけません。)

$ git commit --amend

まとめ

Gitで変更を取り消したい状況をいうのは作業しているとよく発生すると思いますのでぜひ活用頂ければと思います。