0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

3種類のgit reset(soft, mixed, hard)

Posted at

はじめに

git resetには3のオプションがあり、どれを使用するかは状況や目的により大きく異なります。この記事では、状況に応じてどのオプションを選択すべきかを解説します。

git reset とは

変更をある地点まで戻すコマンドです。「ある地点」とはコミット地点のことであり、コミットのHASH値を指定することで、任意の場所まで戻すことができます。

$ git reset [オプション] 戻したい地点のコミット番号

無くしたコミットの差分がどうなるかはオプションで指定することができます。

オプション 差分の削除有無 差分の状態
--soft 残る ステージング状態になる
--mixed 残る ステージング状態にならない
--hard 削除される:scream: -

3種類のオプションと使いどころ

ということで、三種類のオプションをどんな状況で使うべきか見ていきましょう。

1. --soft

--softを指定すると、無くしたコミットに含まれていた修正は全て保持されます。また、その修正はステージングに保持された状態になります。
image.png

使いどころ

  • 直前のコミットメッセージを変更したい!

    • $ git reset --soft HEAD^
      • HEAD^を指定することで、HEADのコミットをなかったことにする
      • HEADで行った修正はステージングに残る(git add された状態)
  • 直前にした二つのコミットを一つにまとめたい!

    • git reset --soft HEAD^^
      • HEAD^^を指定することで、HEAD^とHEAD^^のコミットをなかったことにする
      • HEAD^とHEAD^^で行った修正はステージングに残る(git add された状態)

2. --mixed

--mixedを指定すると、無くしたコミットに含まれていた修正は全て保持されますが、--softと違いその修正はステージング状態にはなりません。
ちなみに、git resetのデフォルト値は--mixedです。
image.png

使いどころ

  • コミットする気のないファイルをAddしてしまったので、git addをなかったことにしたい!
    • $ git reset --mixed HEAD
      • HEADを指定することで、HEADのコミット以後に行われた修正(=まだコミットされてない修正)のステージング状態を解除する(=git add されていない状態にする)

3. --hard

--hardを指定すると、無くしたコミットに含まれていた修正は全て削除されます。
image.png

使いどころ

  • 修正が不要になったので、削除して元の状態に戻したい!

    • $ git reset --hard HEAD
      • HEADを指定することで、HEADのコミット以後に行われた修正(=まだコミットされてない修正)を削除する
  • コミット済みの修正を削除して元の状態に戻したい!

    • $ git reset --hard HEAD^^
      • HEAD^^を指定することで、HEAD^とHEAD^^のコミットをなかったことにする
      • HEAD^とHEAD^^で行った修正は完全に削除される

おわりに

git resetは便利ですが、オプションを間違えると修正がなくなってしまう危険もあります。意味を理解して使うようにしましょう!
ここまでご覧いただきありがとうございました!

参考

https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe
https://www.r-staffing.co.jp/engineer/entry/20191129_1

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?