Git

Git reset入門|履歴を操作して特定の状態に戻す

Gitreset履歴操作

Git reset入門
履歴を操作して特定の状態に戻す

git resetの3つのモード(soft/mixed/hard)の違いと使い方を解説します。

こんな人向けの記事です

  • コミットを取り消したい人
  • resetの3つのモードの違いを理解したい人
  • 安全なリセット方法を知りたい人

Step 1resetの3つのモード

モードHEADステージング作業ツリー
--soft戻る残る残る
--mixed(デフォルト)戻る戻る残る
--hard戻る戻る戻る

Step 2--soft: コミットだけ取り消す

コミットは取り消しますが、変更はステージングされた状態で残ります。

ターミナル
# 直前のコミットを取り消し(変更はステージングに残る)
git reset --soft HEAD~1

# 2つ前のコミットまで戻す
git reset --soft HEAD~2

使用場面: コミットメッセージを変えたい場合や、複数のコミットをまとめ直したい場合に便利です。

Step 3--mixed: ステージングも取り消す

コミットとステージングを取り消し、変更は作業ツリーに残ります。

ターミナル
# 直前のコミットとステージングを取り消し
git reset HEAD~1

# 特定のコミットまで戻す
git reset コミットハッシュ

Step 4--hard: 全て取り消す

コミット、ステージング、作業ツリーの変更をすべて取り消します。

ターミナル
# 直前のコミットを完全に取り消し
git reset --hard HEAD~1

# 特定のコミットまで完全に戻す
git reset --hard コミットハッシュ

注意: --hardで取り消した変更は通常の方法では復元できません。慎重に使用してください。

Step 5resetの取り消し(reflog)

誤ってresetした場合、reflogから復元できます。

ターミナル
# reflogで操作履歴を確認
git reflog

# resetを取り消して元に戻す
git reset --hard HEAD@{1}

ポイント: reflogはローカルにのみ保存され、デフォルトで90日間保持されます。