Git

git logの使い方とcheckout方法

今回はコミット履歴を確認できるgit logについて紹介していきます。

この記事を見ることでコミット履歴の確認から、以前のコミットまで遡る方法を学べます。
開発をする中でgit logは必須コマンドになるので、本記事で極めていきましょう!

git logの使用方法

git logを使用してコミットの履歴を確認する方法を紹介します。
基本的な形からオプションを使用した物まで幅広くカバーしていきます。

開発をする中でコミットは膨大な数になっていくので、本記事を通してコミット履歴を適切に確認できるようにしましょう

基本的な使用方法

git管理下であるプロジェクトがカレントディレクトリの状態で、git log コマンドを打ちます。

$ git log

git logコマンドを打つことで画面に出力される情報で、抑えておくべき物は、
以下の3つです。

  • SHA1 ID(コミットのID)
  • コミットのメタ情報
  • コミットメッセージ

1つ目SHA1 IDはコミットに対してつけられるIDです。
ランダムな数字と文字列で構成されていて、コミットを識別するために使われます。
SHA IDが存在することで、後述するコミット履歴間の移動やコミット取り消しなどが可能になります。

2つ目のコミットメタ情報はコミットしたユーザーの名前やコミット日時を指します。
誰がいつコミットしたか分かるので、しっかり抑えておきましょう。

3つ目のコミットメッセージはコミットにつけられた名前です。
コミットメッセージは基本的に実装した内容と一致しているので、
何が行われたコミットか一目で確認できます。

git logのオプション使用方法

git log のオプションを使用することで、より見易く、
追加の内容を確認可能になります。

使用機会が多いものを紹介します。

git log –oneline

git logに –onelineオプションを付けると、1つ1つのコミットを一行で見ることで出来ます。

このオプションがない場合は1コミットにメタ情報などが足されて、複数行になっています。
なのでコミットのSHAI IDやコミットの名前のみ確認したい場合は、–onelineを使うのがおすすめです。

git log –stat

–statオプションを付けることで、各コミットでの変更ファイルを示してくれます。
該当ファイルの変更場所を確認する方法を次のオプションで紹介します。

git log –patch

–patchオプションで、–statで表示されていた変更ファイルの細部を確認出来ます。

git log –patch-with-stat という形で組み合わることも可能です。
このコマンドによって、–statで示された変更ファイルに対応した、変更箇所を確認できるので非常に便利です。

log情報を使ったバージョンのチェックアウト方法

Gitでは、git logで得た SHI1 IDを指定することで、それぞれのコミットに移動することができます。
コミットには、コミット時の作業ディレクトリの状態が丸々含まれているので、
移動することでタイムマシーンの様に時代を遡れます。

この様にコミット間で移動することをチェックアウトと言います。
そして、チェックアウトはgit checkoutを使ってブランチのHEADを動かすことで実現します。

まずHEADとは何か確認して、その後checkout方法を見ていきましょう。

HEADとは

HEADとは作業しているブランチでのコミットのポインターの様なものです。
要は現在自分がいるブランチでどこに立っているか示してくれるものです。

HEADはデフォルトでブランチの最新のコミットを指します。
そして、このHEADが他のコミットに移ることでチェックアウトが行われます。

タイムマシーンで例えるなら、どの時代に戻りたいか指定するものがHEADって感じですね。

git checkout でHEADを動かす

コミットのポインターであるHEADはgit checkoutで動かせます。

git checkout コマンドに移動したいコミットのSHA1 IDを指定します。

$ git  checkout  対象SHAI ID

このコマンドによって、ブランチの最新コミットを指していたHEADが対象のコミットに移動します。

本来、HEADは最新コミットを指しているのですが、移動している状態をdetached HEADと言います。
detached HEADの状態で作業するのは普通ではないとされているので、
必要がない際は以下のコマンドで最新状態に戻りましょう。

$ git checkout master

万が一、過去のコミットからバグ修正などの作業を行いたい場合は、そこから新たなブランチを作る必要があります。

$ git checkout -b <branch-name>

上記のコマンドで、過去のコミットから新たなブランチが作れます!

 

終わりに

Gitを使った作業をするなかで、コミットの情報を確認するのは必須です。
git logはめちゃくちゃ重要なので、しっかり抑えておきましょう!