見出し画像

前回までで、コミットとその履歴の確認の方法まで紹介しましたね。

今回は、過去にコミットした時点の状態に戻す方法を紹介します。
記録はとっておくだけでなく、活用しないと意味ないですからね~
変更の履歴を追えるだけでなく、『 必要な時に任意の時点に戻せる 』これが Git の良いところです🎵

まずは下準備

もう一つくらいはコミットがないと例を出しづらいので、コミットを一つ増やしました。
具体的には、2行目に 「 def 」 と追記して保存しました。

画像1

過去に戻す

さあいよいよ本題です。

まだ 「 def 」 が追記されていないコミットの状態に戻してみます。
下の図のように「 History 」というところをクリック(選択)して、一つ前のコミットメッセージ "1行目に「abc」と入力" を右クリックします。すると色々でてきますが、『チェックアウト』を押してください。

画像2

何やら確認が入りますが、とりあえず今(今回)は気にしなくて大丈夫です。
そのまま「OK」ボタンをクリックします。

作業コピー切り替えの確認

すると"1行目に「abc」と入力"のところに、『 HEAD 』という文字が現れました。これで問題ないです。
『 HEAD 』 とは、今自分がいる(作業している)場所を指し示すもの(ポインタ)です。
作業ツリーという領域の状態が切り替わったわけです。

画像4

コマンド操作の場合 ~過去に戻す~

git checkout 」 コマンドを使用します。
もうちょっと補足すると、下記のように 「 git checkout ハッシュ値 」 と入力します。
こうすることで、HEAD をここで指定したコミットに移動させます。

補足
ハッシュ値 』 とは、それぞれのコミットを表す一意の16進数の値です。
今回の場合は、「 fd4b030beac0815c0ca03fdd3c6ce9103b6ef200 」です。

🔻 「 git log 」で過去のコミットとハッシュ値を確認

mevius@SurfaceLaptop MINGW64 ~/Documents/Gitdemo (master)
$ git log
commit b5a1e576b6f424b6b85f667a178b513e46438a66 (HEAD -> master)
Author: mevius <mevius@sample.local>
Date:   Sat Jan 16 15:08:21 2021 +0900

   2行目に「def」と追記

commit fd4b030beac0815c0ca03fdd3c6ce9103b6ef200 👈今回の対象のハッシュ値
Author: mevius <mevius@sample.local>
Date:   Thu Jan 14 16:20:48 2021 +0900

   1行目に「abc」と入力

commit 68ad5472cf0e6910f7ecfbae1c0031f35029f5d8
Author: mevius <mevius@sample.local>
Date:   Wed Jan 13 14:54:01 2021 +0900

   first commit

🔻 戻したい状態のハッシュ値を使って「 git checkout 」

mevius@SurfaceLaptop MINGW64 ~/Documents/Gitdemo (master)
$ git checkout fd4b030beac0815c0ca03fdd3c6ce9103b6ef200
Note: switching to 'fd4b030beac0815c0ca03fdd3c6ce9103b6ef200'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

 git switch -c <new-branch-name>

Or undo this operation with:

 git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at fd4b030 1行目に「abc」と入力 👈HEADが移動した

mevius@SurfaceLaptop MINGW64 ~/Documents/Gitdemo ((fd4b030...)) 👈表示が変わった
$

mevius@SurfaceLaptop MINGW64 ~/Documents/Gitdemo ((fd4b030...)) 
$ git status 
HEAD detached at fd4b030 
nothing to commit, working tree clean

実はハッシュ値をすべて記述しなくても大丈夫なのですが、ハッシュ値をダブルクリックすると下の図のようにすべて選択できてしまうので、これを丸ごと使ってしまいましょう。

ハッシュ値選択

この状態で右クリックして「 Copy 」して

画像6

そのあと「 Paste 」で貼り付けてしまいましょう。

ファイルを開いてみる(過去に戻っているか?)

おぉ~2行目に追記したはずの「 def 」 がないですね。当然です時が戻っていますので。

このファイルをコピペなどして例えばデスクトップなど他の場所に持っていくこともできます。これで過去の時点のファイルを取り出すことができましたね。

画像7

元に戻す

先ほどの要領で、今度は "2行目に「def」と追記" のところでチェックアウトします。

画像8

何やら警告が出ますが、とりあえず今(今回)は気にしなくて大丈夫です。
そのまま「はい」ボタンをクリックします。

警告

これで元(最新の状態)に戻ったはずです。

コマンド操作の場合 ~元に戻す~

「 git checkout master 」 とコマンドを打ってください。これで元通りです。
ちなみに、『 master 』 は以前よりちょこちょこ名前が出てくるブランチというものですが、今はとりあえず気にしなくて大丈夫です。

Switched to branch 'master'

とも書かれていますね。現状では、ブランチは master しかない状態です。

mevius@SurfaceLaptop MINGW64 ~/Documents/Gitdemo ((fd4b030...))
$ git checkout master
Previous HEAD position was fd4b030 1行目に「abc」と入力
Switched to branch 'master'

mevius@SurfaceLaptop MINGW64 ~/Documents/Gitdemo (master) 👈元の表示に戻った
$

軽く補足しておくと、インストールしたときに 『 default branch name 』 を master にしましたので、今はコイツだけがあります。

ファイルを開いてみる(元通りか?)

はい、ちゃんと 「 def 」 と記載されていますね。間違いなく過去から現代に戻ってきました。

画像10

今回はここまで 🔚

今回は「 git checkout ハッシュ値 」 を使って HEAD を過去コミット時点に移動させて時を戻してみました。

ちなみに、「 git checkout ブランチ(branch)名」 としてブランチを切り替えるときにも使ったりします。
「 git checkout master 」 は、master 以外のブランチにいる状態から master ブランチ切り替えるときにも使います。

ブランチの話はまた次回以降したいと思います。
最後までお読みいただきありがとうございました 😊

▶ 続けて読むのにおススメな記事

#いま私にできること #これからの仕事術 #IT #パソコン #駆け出しエンジニア #PC #windows #Git #コマンド #非エンジニア #GUI #BASH #Sourcetree #挑戦している君へ

もしこの記事が何かの参考になったもしくは面白かったという方は、応援していただけると大変嬉しいです😊 これからもよろしくお願いします。