Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【git入門4】コミットの取り消し(reset)

前回の続きです〜

今回はコミットの取り消し(reset)についてです〜

gitの使い方 コミットの取り消し(reset)

①取り消しは危険

reset(取り消し)は非常に危険なコマンドです〜

revertはコミットを打ち消したあとも打ち消したコミットに履歴から戻ることができますが、resetは履歴そのものを削除するので、二度と戻ることができなくなってしまいます〜

特にGit Hubなどにあげたプロジェクトで使うと他の人にまで迷惑がかかってしまうので、基本的にローカル環境のみで注意して使いましょう〜

②resetの使い方

それではresetを使ってみましょう〜

今のところ履歴は、First Commit → Second Commit → Revert "Second Commit"となっています〜
ので、Revert "Second Commit"を取り消してみましょう〜

$ git reset --hard HEAD~
HEAD is now at fa4595f Second Commit


「--hard」はリポジトリ上の取り消しだけではなく、実際のtest.txtファイルの内容まで取り消す時に付けます〜

HEADの後ろの「~」は、何番目かを表します〜今回は取り消しをして1つ前に戻りたいので「~」はひとつですが、2つ前のFirst Commitに戻りたい時は「~~」もしくは「~2」と書けば大丈夫です〜

$ git log
commit fa4595ff783ca02c8162e49ad3253a6734e67377
Author: 名前 <メールアドレス>
Date:   Mon Aug 17 16:18:13 2015 +0900

    Second Commit

commit 29afc77b42799082ca80138015bde8e7be0f6bda
Author: 名前 <メールアドレス>
Date:   Mon Aug 17 16:10:01 2015 +0900

    First Commit


git logで確認してみると、確かにRevert "Second Commit"は削除されています〜

    • hardオプションをつけていたのでtest.txtファイルのないようも「あああああ いいいいい」に戻っていると思います〜

③取り消しの取り消し

さて、Revert "Second Commit"の履歴は削除されました、もう二度と復元することはできません・・・!間違って消したとしても自己責任です!

普通ならそうなるのですが、直前のresetのみ救済措置が残されています〜

git reset --hard ORIG_HEAD
HEAD is now at cf45336 Revert "Second Commit"


resetの対象にORIG_HEADを指定すると、reset前に戻すことができます〜

git logで確認してみましょう〜

$ git log
commit cf453369abea76e3c4464a1639d7aac8b38f8c19
Author: 名前 <メールアドレス>
Date:   Mon Aug 17 16:51:17 2015 +0900

    Revert "Second Commit"
    
    This reverts commit fa4595ff783ca02c8162e49ad3253a6734e67377.

commit fa4595ff783ca02c8162e49ad3253a6734e67377
Author: 名前 <メールアドレス>
Date:   Mon Aug 17 16:18:13 2015 +0900

    Second Commit

commit 29afc77b42799082ca80138015bde8e7be0f6bda
Author: 名前 <メールアドレス>
Date:   Mon Aug 17 16:10:01 2015 +0900

    First Commit


なんとか元に戻すことができました〜


今回はここまでです〜

ありがとうございました〜