テクノロジー

2017年11月18日

Gitのコミットを戻す方法

Aws4 request&x amz signedheaders=host&x amz signature=e5c60ed8d9db2f9e8141c1d28e2bcbf6d3cfb2d5dd6c810b935caa18eed9a66c

Gitのコミットを戻す方法

この記事では、git commit -m "sample"などでコミットした記事を取り消す操作について解説していきます。
gitのコマンドは便利なものが多いので一つ一つおさえていきましょう。

では早速、コミットの戻し方についてですが、大きく分けて2種類あります。

  • git reset –soft (commit)
  • git reset –hard (commit)

softはcommitをなかったことにしますが、エディタで編集した部分は 残ります
一方でhardはエディタで編集した部分ごと 全てなかったことになります
つまりhardは 破壊的 であると言えるでしょう。

ではここで、数回コミットしたgitの例を出してみます。

(コンソール)

~/workspace/achieve $ git log

commit 1b55f5b3ba2c8b98b5afbcd89d8de68ac2264515
Author: yujimiyashita <hogehoge@example.com>
Date:   Tue Mar 28 11:43:11 2017 +0000

    Readme編集

commit bd2b6709f78461f5b4ff22940acedcd75c32a049
Author: yujimiyashita <hogehoge@example.com>
Date:   Wed Mar 15 15:43:16 2017 +0000

    デザインの途中

commit 13850da08bef841c942993e1c55ab9e47187e38c
Author: yujimiyashita <hogehoge@example.com>
Date:   Tue Mar 14 15:45:20 2017 +0000

    最初のコミット

今回は デザインの途中 までコミットを戻したいという想定でresetコマンドを実行します。

(コンソール)

~/workspace/achieve $ git reset --soft bd2b6709f78461f5b4ff22940acedcd75c32a049
~/workspace/achieve $ git reset --hard bd2b6709f78461f5b4ff22940acedcd75c32a049

上記コマンドを実行した後にコミット履歴を見てみると、 Readme編集 というコミットが消えているのがわかると思います。
(3つあったコミット履歴が2つになっています)

(コンソール)

~/workspace/achieve $ git log

commit bd2b6709f78461f5b4ff22940acedcd75c32a049
Author: yujimiyashita <hogehoge@example.com>
Date:   Wed Mar 15 15:43:16 2017 +0000

    デザインの途中

commit 13850da08bef841c942993e1c55ab9e47187e38c
Author: yujimiyashita <hogehoge@example.com>
Date:   Tue Mar 14 15:45:20 2017 +0000

    最初のコミット

このようにしてコミット履歴を消すことができます。
チーム開発では、このようにコミット履歴を操作する機会も多いので、今のうちにやり方に慣れておくと良いでしょう。

DIVE INTO CODEのことをもっと知ってみませんか?