Git

The `git reset` command in Git is a tool for resetting the repository's HEAD, index, and working tree to a specified commit, allowing you to revert to a previous state.

git reset

 Gitの git resetコマンドは、リポジトリの状態を以前の状態に戻すために使用されます。このコマンドには3つの主要なモードがあり、それぞれ異なるレベルで変更を取り消すことができます。

--soft モード
--soft モードは、HEADを指定したコミットに移動させますが、インデックス(ステージングエリア)やワーキングツリー(作業ディレクトリ)の内容は変更しません。このモードは、コミットだけを取り消したい場合に使います。

Git Bash

git reset --soft HEAD~1
上記のコマンドは、HEADを1つ前のコミットに移動し、現在のコミットをステージングエリアに残します。
--mixed モード(デフォルト)
--mixed モードは、HEADを指定したコミットに移動させ、インデックスの内容もそのコミットの状態に戻しますが、ワーキングツリーの内容は変更しません。このモードは、コミットとステージングエリアをリセットし、変更をワーキングツリーに残したい場合に使います。

Git Bash

git reset --mixed HEAD~1
上記のコマンドは、HEADを1つ前のコミットに移動し、インデックスをその状態にリセットします。ワーキングツリーの変更はそのまま残ります。
--hard モード
--hard モードは、HEADを指定したコミットに移動し、インデックスとワーキングツリーの内容もそのコミットの状態に戻します。このモードは、全ての変更を完全に取り消してリポジトリを指定したコミットの状態に戻したい場合に使います。

Git Bash

git reset --hard HEAD~1
上記のコマンドは、HEADを1つ前のコミットに移動し、インデックスとワーキングツリーをその状態にリセットします。これにより、ワーキングツリーの全ての変更が失われます。

用途と注意点

 git reset コマンドは、リポジトリの状態を柔軟に戻すための強力なツールです。各モードを理解し、適切な状況で使用することで、効果的にリポジトリの管理が可能となります。