【Git】コミットを取り消す方法!resetコマンドとオプション

【Git】コミットを取り消す方法!resetコマンドとオプション

この記事からわかること

  • Gitコミット取り消す方法
  • resetコマンド使い方オプション

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Gitでコミットを取り消す方法

Gitで一度実行したコミットを取り消すにはgit resetコマンドの以下のオプションを実行します。

$ git reset --soft HEAD^

上記のコマンドを実行することで1つ前のコミットが削除され、ファイルがインデックス状態に戻ります。

しかし過去のコミットを指定するとそのコミット以降の変更も取り消されてしまうので注意が必要です。特定のコミットのみを打ち消したい場合はrevertを使用します。

resetコマンドの役割

resetコマンドはコミットの履歴を変更(HEADの位置を移動)するためのコマンドです。コミット自体の取り消しやそれに伴うインデックス、ワーキングツリーの変更を操作する役割があります。

$ git reset [オプション] [コミット]

git resetコマンドには複数のオプション(サブコマンド)が用意されています。

指定するコミットはハッシュ値です。先頭のコミットに対してHEADで指定できます。

ステージングしたことを取り消す

ワーキングツリーのファイルを変更しステージングした後にそのステージングを取り消すことも可能です。

$ git reset

上記のようにgit resetとするだけで現在のHEADの状態にステージングしてあるファイルを戻すことができます。

任意のファイルのみステージングを取り消す

ステージングを取り消す際には任意のファイルを指定して実行することも可能です。その際は -- [ファイル名]をつけます。

$ git reset -- [ファイル名]

--softオプション

--softオプションは指定したコミット以降の変更がインデックス(ステージングエリア)に保持されます。コミットを取り消すだけで、ワーキングツリーは変わりません。

$ git reset --soft HEAD^
対象 変更の可否
コミット 指定したコミット以降を削除
インデックス コミット前に戻る(ステージングだけした状態)
ワーキングツリー 変わらない

--mixedオプション

--mixedオプションは指定したコミット以降の変更がワーキングツリーに保持されます。インデックスはリセットされ、変更内容はステージングされていない状態となります。

$ git reset --mixed HEAD^
対象 変更の可否
コミット 指定したコミット以降を削除
インデックス 解除(ステージング前に戻る)
ワーキングツリー 変わらない

--hardオプション

--hardオプションは指定したコミット、インデックス、ワーキングツリーの変更が完全に取り消されます

$ git reset --hard HEAD^
対象 変更の可否
コミット 指定したコミット以降を削除
インデックス 解除(ステージング前に戻る)
ワーキングツリー コミット前に戻る

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index