チュートリアル3 コミットを書き換えよう!

3. reset

このチュートリアルでは、あらかじめ履歴が準備されているローカルリポジトリを使用します。

こちらからダウンロードしてください。

ここでは、resetを使ってmasterブランチの先頭から二つ分のコミットを削除します。

stepup-tutorial/tutorial3ディレクトリに移動します。このリポジトリの履歴は次の図で表す状態になっています。

リポジトリの履歴

logコマンドで履歴を確認してみましょう。

$ git log
commit 0d4a808c26908cd5fe4b6294a00150342d1a58be
Author: yourname <yourname@yourmail.com>
Date:   Mon Jul 16 23:19:26 2012 +0900

    pullの説明を追加

commit 9a54fd4dd22dbe22dd966581bc78e83f16cee1d7
Author: yourname <yourname@yourmail.com>
Date:   Mon Jul 16 23:19:01 2012 +0900

    commitの説明を追加

commit 326fc9f70d022afdd31b0072dbbae003783d77ed
Author: yourname <yourname@yourmail.com>
Date:   Mon Jul 16 23:17:56 2012 +0900

    addの説明を追加

commit 48eec1ddf73a7fb508ef664efd6b3d873631742f
Author: yourname <yourname@yourmail.com>
Date:   Mon Jul 16 23:16:14 2012 +0900

    first commit

sample.txtファイルを開いて内容を確認します。

サルでもわかるGitコマンド
add 変更をインデックスに登録する
commit インデックスの状態を記録する
pull リモートリポジトリの内容を取得する

resetを使って、コミットを削除します。

コミットを削除

$ git reset --hard HEAD~~
HEAD is now at 326fc9f addの説明を追加

sample.txtを開いて、commitとpullの説明がなくなっているかどうか確認してください。また、logコマンドで履歴を確認してください。

$ git log
commit 326fc9f70d022afdd31b0072dbbae003783d77ed
Author: yourname <yourname@yourmail.com>
Date:   Mon Jul 16 23:17:56 2012 +0900

    addの説明を追加

commit 48eec1ddf73a7fb508ef664efd6b3d873631742f
Author: yourname <yourname@yourmail.com>
Date:   Mon Jul 16 23:16:14 2012 +0900

    first commit
                        

reset前のコミットはORIG_HEADという名前で参照することができます。間違えてresetしたなどの場合は、ORIG_HEADにresetするとreset前の状態に戻すことができます。

$ git reset --hard ORIG_HEAD
HEAD is now at 0d4a808 pullの説明を追加