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つ前のコミットに移動し、インデックスとワーキングツリーをその状態にリセットします。これにより、ワーキングツリーの全ての変更が失われます。
用途と注意点
- --soft モードは、直前のコミットだけを取り消して再度コミットをやり直したい場合に便利です。
- --mixed モードは、ステージングエリアも含めて変更を取り消したい場合に適しています。
- --hard モードは、全ての変更を完全に取り消したい場合に使用しますが、注意が必要です。ワーキングツリーの変更が失われるため、必要な変更を保存していないとデータが失われる可能性があります。
git reset コマンドは、リポジトリの状態を柔軟に戻すための強力なツールです。各モードを理解し、適切な状況で使用することで、効果的にリポジトリの管理が可能となります。