git resetでコミットを取り消す[Sourcetree]

2018年12月15日

git resetでコミット自体をなかったことにして、過去のコミットの状態へ戻すことができます。その方法は主にMixed・Soft・Hardの3つのパターンが存在します(後述)。

 

まずは視覚的に分かりやすいSourcetreeで説明してみます。

 

 

下記画像は、ファイルを生成し、単純にabcdと一文字づつ追加していくごとにコミットしていったSourcetreeの様子です。

 

 

この状態から「bを追加」の状態のコミットに戻してみます。「bを追加」上で右クリックし、「このコミットまでmasterを元に戻す」を選択します。

 

 

すると「Soft」「Mixed」「Hard」の3つのモードを選択することができます。デフォルトはMixedです。

 

 

それぞれのモードを選択した時のコミットの戻り方は以下のようになります。

 

1. Mixedを選択した場合

 

「bを追加」までコミットを戻すと以下のような履歴になります。

 

Mixedでコミットを戻した場合、編集しているファイルの文字列は「abcd」のままです。また作業ツリーに位置しているのがわかります。つまり「作業コピーの変更内容を保持」して、インデックスをリセットしている状態です。

 

2. Softを選択した場合

 

Softでコミットを戻した場合、編集しているファイルは「abcd」のままです(作業コピーの変更内容を保持)。ファイルはステージにいるのが分かります。

 

3. Hardを選択した場合

 

Hardを選択した場合は、作業していた履歴を完全に戻します。つまり「abcd」という文字列が「ab」に戻り、履歴も下記のように表示されます。

 

 

 

Gitコマンドでおこなう


上記の説明を、Sourcetreeを利用せずにコマンドでおこなってみます。

 

git logで履歴を見ます。「bを追加」までコミットを戻します。

 

それぞれの「–mixed」「–soft」「–hard」のオプションを追加してresetしていきます。

Mixed

下記のようにオプションを付けないで実行した時はデフォルトでこのMixedになります。

 

Soft

 

Hard

 

 

関連ページ

git revertでコミットを取り消す

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー