変更履歴を利用する(Gitを知ろう)

Gitについて学習する連載の4回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

変更履歴を利用する

前回は、変更履歴を確認する方法をご紹介しました。

f:id:HiroCom777:20210627174622j:plain

でも、この変更履歴・・・確認できるだけじゃ意味がないですよね?積極的に利用する方法を模索しましょう。

コミットの詳細を確認する

まず、任意のコミットの内容を確認してみましょう。任意のコミットを確認するには、確認したいコミットを指定しなければなりません。コミットの指定はコミットIDで行います。コミットIDとはコミットを一意に識別するための値です。コミットしたデータの内容だけではなく、コミットした人の情報、前のコミットIDなどの情報をもとに算出されます。コミットIDは、git logで確認できます。

f:id:HiroCom777:20210627174516j:plain

この40の英数文字がコミットIDです。この文字列で任意のコミットを指定できるのですが、ちょっと長すぎて使い勝手がよくありません。そこで、実はコミットIDの先頭の7文字だけでもある程度コミットを指定できるようになっています。コミットIDの先頭7文字(短縮版コミットID)は、git log --onelineで取得できます。各コミットの先頭に表示されているのが短縮版コミットIDです。

f:id:HiroCom777:20210626174052j:plain

それでは、以下の様に入力してみてください。

Git  show (短縮版)コミットID

コミットが極端に多くなると、短縮版のコミットIDではコミットを指定できなくなることがあるそうですが、一般的には短縮版で十分機能すると思います。ここでは2回目のコミットについて確認してみます。僕の場合コミットIDの部分はを'a6711fd'と指定しました。皆さんの環境では別の値になります。結果を確認してみましょう。画面は以下の様になりました。

f:id:HiroCom777:20210627182713j:plain

上から、コミットID、コミットした人と日時の情報、コミットする際に入力した情報、そして前回のコミットとの違いが表示されます。File_1.txtの最終行に追加したテキスト(How are you?)を確認できますね。

コミットの内容を比べる

コミットIDでコミットを指定することによって2つのコミット内容の比較ができます。最初と3回目(最後)のコミットを比べてみましょう。 以下を入力します。コミットIDは短縮版でOKです。

Git diff コミットID_1 コミットID_2 

結果は以下の様になりました。

f:id:HiroCom777:20210627182833j:plain

'File_1.txt'には行の追加がある旨が表示されています。また、最初のコミットには'File_2.txt'自体がないこともわかりますね。

任意のコミットに戻る

現在のコミットが間違っていると気が付いたとき、過去の任意のコミットまで戻ることができると便利です。お次は任意のコミットの時点まで戻る方法をご紹介します。前回の状態から最初のコミットまで戻ってみましょう。前回までで、3回のコミットを実行しました。その都度ファイルの中身を変更したり、ファイルを追加したりしました。その流れは以下の様に確認できます。

f:id:HiroCom777:20210627182849j:plain

現在2つのファイルと3つのコミットが存在しています。新しくコミットするべきものはありません。この状態から、一番最初のコミットに戻ってみようと思います。この場合もコミットの指定はコミットIDを使用します。

戻る前にGit Bashで開いているフォルダーの内容をWindowsで開いて確認してください。'File_1.txt'、'File_2.txt'の2つのファイルが確認できると思います。

それでは、Git Bashに戻って最初のコミットに戻ってみましょう。以下を入力します。こちらもコミットIDは短縮版でOKです。

Git  reset --hard  コミットID

git logで状態を確認してみると、最初のコミットの状態に戻っていることがわかります。

f:id:HiroCom777:20210627182909j:plain

再びWindowsで開いているフォルダーの内容を確認してみましょう。ファイルは'File_1.txt'だけになっています。メモ帳などで、その内容を確認してみると・・・

Hello!!

と、なっているはずです。最初のコミットに戻ることができました。

元に戻した行為の取り消し

元に戻ってはみたのだけれど、やっぱり戻らなくてもいいや!!ってなった時は以下の入力で変更を取り消すことができます。

git reset --hard ORIG_HEAD

git logで確認すると、コミットを3回実行した状態に戻っています。ファイルの内容、数も元に戻っていますね。

f:id:HiroCom777:20210627182925j:plain

これで、いつでも任意の状態に戻ることができます。でも、何かにつけてコミットを戻したりしているとトラブルの原因になりかねません。基本的にはコミットを重ねて仕事を進めていく方向で運用しましょう。

次回はブランチ

以上、今回は変更履歴を利用する方法についてご紹介しました。次回はブランチについて説明しようと思います。お楽しみに!!

hirocom777.hatenadiary.org

Gitを知ろうの連載記事はコチラからどうぞ