スライドショースライドショー

【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の基本を解説していますので、参考にしてください!


【5分でわかる】GitHubとは?概要やメリットを簡単解説!
更新日 : 2019年8月9日

まとめ

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

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

侍ブログ編集部

侍ブログ編集部

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説