【Git】コミットを取り消す方法!resetコマンドとオプション
この記事からわかること
- Gitのコミットを取り消す方法
- resetコマンドの使い方とオプション
index
[open]
\ アプリをリリースしました /
Gitでコミットを取り消す方法
Gitで一度実行したコミットを取り消すにはgit resetコマンドの以下のオプションを実行します。
上記のコマンドを実行することで1つ前のコミットが削除され、ファイルがインデックス状態に戻ります。
しかし過去のコミットを指定するとそのコミット以降の変更も取り消されてしまうので注意が必要です。特定のコミットのみを打ち消したい場合はrevertを使用します。
resetコマンドの役割
resetコマンドはコミットの履歴を変更(HEADの位置を移動)するためのコマンドです。コミット自体の取り消しやそれに伴うインデックス、ワーキングツリーの変更を操作する役割があります。
git resetコマンドには複数のオプション(サブコマンド)が用意されています。
指定するコミットはハッシュ値です。先頭のコミットに対してHEADで指定できます。
ステージングしたことを取り消す
ワーキングツリーのファイルを変更しステージングした後にそのステージングを取り消すことも可能です。
上記のようにgit resetとするだけで現在のHEADの状態にステージングしてあるファイルを戻すことができます。
任意のファイルのみステージングを取り消す
ステージングを取り消す際には任意のファイルを指定して実行することも可能です。その際は -- [ファイル名]をつけます。
--softオプション
--softオプションは指定したコミット以降の変更がインデックス(ステージングエリア)に保持されます。コミットを取り消すだけで、ワーキングツリーは変わりません。
| 対象 | 変更の可否 |
|---|---|
| コミット | 指定したコミット以降を削除 |
| インデックス | コミット前に戻る(ステージングだけした状態) |
| ワーキングツリー | 変わらない |
--mixedオプション
--mixedオプションは指定したコミット以降の変更がワーキングツリーに保持されます。インデックスはリセットされ、変更内容はステージングされていない状態となります。
| 対象 | 変更の可否 |
|---|---|
| コミット | 指定したコミット以降を削除 |
| インデックス | 解除(ステージング前に戻る) |
| ワーキングツリー | 変わらない |
--hardオプション
--hardオプションは指定したコミット、インデックス、ワーキングツリーの変更が完全に取り消されます。
| 対象 | 変更の可否 |
|---|---|
| コミット | 指定したコミット以降を削除 |
| インデックス | 解除(ステージング前に戻る) |
| ワーキングツリー | コミット前に戻る |
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。






