スライドショー

【Git入門】resetでコミットを取り消す方法を解説!

git resetを使用すれば、誤ってコミットした内容を取り消すことができます。

誤ってコミットしたので取り消したい
resetコマンドの使い方がよくわからない

そんな方に向けて、この記事ではgit resetコマンドを使用してコミットの内容を取り消す方法について、以下の内容を解説していきます!

  • git resetとは
  • git resetのオプション
  • git resetの使い方
  • git resetを取り消す方法

この記事を読めば、git resetでコミット内容を取り消すための一覧の流れを理解できるようになるでしょう。初心者の方はぜひ参考にしてください。

git resetとは

git resetとは、一言で言うと「Gitでコミットした内容を取り消す」ためのコマンドです。そのため、うっかりコミットしてしまった変更内容を取り消したい場合や、変更内容に誤りがあって取り消したい場合によく使うコマンドです。

git resetの書き方

# 指定したファイルをステージングから削除
git reset <file>

# ステージングをリセット
git reset

# 現在のブランチを指定したコミットに戻す
git reset <commit>

# オプション指定。主に [--soft | --hard] [HEAD | HEAD^]
git reset <option> <commit>

git resetコマンドは主にローカルリポジトリに対して行います。リモートリポジトリで公開されているコミットに対してresetを行うと、不整合が発生してしまうので実施しないようにしましょう。

git resetのオプション

ここでは、git resetコマンドでよく使うオプションについて紹介します。

コミットを取り消す(--soft)

コミットのみを取り消したい場合は「--soft」を指定します。

# コミットコードを指定
git reset --soft 取り消しするコミットコード

# 直前のコミットを取り消しする場合
git reset --soft HEAD^

直前のコミットのみを取り消したいときはコミットコードの代わりに「HEAD^」を指定すると便利です。
(以降のオプションについても同様)

コミット内容を全て取り消す(--hard)

コミット内容及びステージングエリアへの移動も取り消したい場合は「--hard」を指定します

# コミットコードを指定
git reset --hard 取り消しするコミットコード

# 直前のコミットを取り消しする場合
git reset --hard HEAD^

git resetの使い方

では実際にgit resetの使い方を見ていきましょう。

事前準備

「/Users/ユーザー名/sample」以下のsample.txtの変更内容をresetで取り消してみます。まずはsampleディレクトリを作成します。

$ mkdir sample
$ cd sample
$ git init
Initialized empty Git repository in /Users/taka/sample/.git/

ファイルsample.txtを作成します。

$ vi sample.txt

sample.txt

Hello Git!

ファイルを作成したら、「git add」コマンドでGitにインデックスの追加、「git commit」コマンドでGitに登録します。

$ git add sample.txt
$ git commit -m “Gitの勉強”

resetで変更内容を取り消す

作成したsample.txtを以下の内容に変更します。

sample.txt

Hello Git!
ファイルの内容を変更

ファイルの内容を変更したら再度コミットします。

$ git add sample.txt
$ git commit -m “Gitの内容変更”

「git log」コマンドでGitのログを確認すると、2回コミットされていることがわかります。

$ git log
commit 0de9e7fac30ab8b42a88c4a7aa36b7f98c77ca3f (HEAD -> master)
Author: yamataka <[email protected]>
Date:   Mon Sep 10 15:00:02 2018 +0900

    Gitの内容変更

commit 5da09418fc0b1288715b3eb768ca977024a8602f
Author: yamataka <[email protected]>
Date:   Mon Sep 10 14:56:10 2018 +0900

    Gitの勉強

では実際に「git reset」コマンドでコミットを取り消してみましょう。ここでは最初のコミットを指定します。

$ git reset --hard 5da09418fc0b1288715b3eb768ca977024a8602f
HEAD is now at 5da0941 Gitの勉強

この状態で「git log」コマンドで確認してみると、直前のコミットが取り消されていることがわかります。

$ git log
commit 5da09418fc0b1288715b3eb768ca977024a8602f (HEAD -> master)
Author: yamataka <[email protected]>
Date:   Mon Sep 10 14:56:10 2018 +0900

    Gitの勉強

また、ファイルも変更内容が取り消されています。

$ cat sample.txt 
Hello Git!

ここではオプションの--hardを指定しましたので、ステージングエリアの移動及びコミットの内容も取り消されています。

誤ってresetしてしまった場合

誤って直前のコミット内容をresetした場合は「ORIG_HEAD」を指定することで元に戻すことができます。

$ git reset --hard ORIG_HEAD

「git log」コマンドで確認すると、コミット内容が元に戻っていることがわかりますね!

$ git log
commit 0de9e7fac30ab8b42a88c4a7aa36b7f98c77ca3f (HEAD -> master)
Author: yamataka <[email protected]>
Date:   Mon Sep 10 15:00:02 2018 +0900

    Gitの内容変更

commit 5da09418fc0b1288715b3eb768ca977024a8602f
Author: yamataka <[email protected]>
Date:   Mon Sep 10 14:56:10 2018 +0900

    Gitの勉強

そもそもGitについてよくわからない方へ

そもそもGitについてよくわからない人は、以下の記事にGitやGitHubの基本を解説していますので、参考にしてください!


GitHubとは?概要やメリットを初心者向けに簡単解説!
更新日 : 2020年3月3日

まとめ

ここではgit resetでコミットした内容を取り消す方法について、以下の内容で解説しました。

  • git resetとは
  • git resetのオプション
  • git resetの使い方
  • git resetを取り消す方法

git resetを使用すれば、誤ってコミットした内容を簡単に取り消すことができますので非常に便利です。もし、resetコマンドについて忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら