GitのResetの3つのモードの違いを徹底解説|Gitやばい辞典

WEB制作の現場で本当に起きる現場で知らないと本当に困るGITやばい辞典 画像で詳細解説

それは、突然やってくる。

この記事では、GitのResetの3つのモード「soft」「mixed」「hard」の違いを、VSCodeとコマンドライン(以下、コマンド)の両方で解説します。

Gitを覚えるのがつらい。でも、いざという時にGitが使えないのはやばい。どうせ覚えないといけないなら、さっさとマスターするのが吉。そんな現場ですぐに役立つGit実践集。それが「Gitやばい辞典」です。

【表で比較】GitのResetの3つのモードの違い

オプションHEADの移動ステージングのリセット作業ファイルのリセットよく使われるシーン
--soft✅ する❌ しない❌ しない直前のコミット内容を修正したい時
--mixed✅ する✅ する❌ しないデフォルト。 ステージングだけやり直したい時
--hard✅ する✅ する✅ する変更を完全に破棄して過去に戻りたい時

【VSCodeで比較】GitのResetの3つのモードの違い

おまけ:Resetの2つの機能

機能の種類具体的なコマンドの例何(ターゲット)をリセットする?HEAD(自分の居場所)は動く?備考
① インデックスのリセットgit reset HEAD <file>「ステージ(addした内容)」
※VSCodeのステージングの「ー」は内部でこれをやっている
動かないaddの取り消しだけ。内部的には、最新コミットをステージに**「上書き」**して add を消している(revert的な感じ)
現在はrestoreが推奨されている
② HEADのリセットgit reset --hard <ID>「自分のいる場所(歴史)」移動する指定したコミットIDの場所へ**「ワープ」**する(タイムマシン)

① インデックスのリセットはrestoreへ

Git公式は2019年(Ver 2.23)、多機能だった reset からインデックスのリセット機能を restore として独立させ、コマンドの役割を明確に分担させました。