コミット履歴の閲覧の例

スポンサーリンク

コミット履歴の閲覧 (git log)

git logでコミット履歴を確認できます。オプションによって表示を大きく変えることができます。ここでは大まかに4つの表示について紹介します。

  • 通常の表示(特に特別なオプションを用いない場合)
  • 簡潔なグラフ形式の表示
  • 変更したファイルを確認
  • 変更したファイルの変更した行数を表示

通常の表示

通常の表示では、以下のような表示が行われます。表示する項目が多い場合はページャが開きます。
以下の例では、ページャが開かないように-nオプションで表示する個数を制限しています。

簡潔なグラフの表示

簡潔なグラフを表示するためのオプション指定は以下のようになります。

それぞれのオプションの意味は以下の表のようになります。

オプション説明
--allすべてのブランチを辿ってコミット履歴を表示
--decorateブランチ名やタグ名等を表示
--graphグラフ表示
--onelineコミット履歴を一行で表示

そして、以下のように表示されます。

変更したファイルを表示

--name-statusを用いると変更したファイルが表示されます。

以下のような表示になります。

グラフにすると少しガタガタな表示になり、それが気になる場合は--graphオプション外すと

以下のような表示にできます。

変更したファイルの変更した行数を表示

--numstatで変更したファイルの変更した行数を表示できます。表示される数値は追加した行数と削除した行数になります。

表示は以下のようになります。

コミットのチェックアウト (git checkout)

git logでコミット履歴を確認して気になるコミットがある場合、そのコミットのハッシュ値を指定することでその時のバージョンを確認できます。

その時、色々メッセージが表示されますが、detached HEAD状態になったというメッセージが表示されます。
この時、--all等のオプションのないgit logを見ると

のような表示になり、コミット履歴が消えたように見えますが、これは現在いるコミット(HEADが指すコミット)から履歴を辿って表示されているだけなので、
コミット履歴の全体を見るために--allオプションを利用して、git logを用いると

のように表示されます。元に戻るにはブランチ名を指定します。そうするとHEADの位置がブランチを指すようになり、detached HEAD状態が解除されます。

あまりないと思いますがブランチやタグで最新のコミットが参照されていない場合は基本的に戻れなくなるのでそこは注意が必要かもしれません。
例えば、detached HEAD状態でコミットをリポジトリへ記録していくと参照されないコミットを生み出せてしまいます。特定のコミットに移動した後にそのコミットからの分岐を作成したい場合は、ブランチを作成しそのブランチをチェックアウトすることでそのような参照されないコミットを生み出すことを防ぐことができます。

上の例で

は、一つのコマンドとして

でブランチの作成と切り替えを同時に行っても良いでしょう。

補足として、新しく作成したブランチ(b1-1)に何かを新しくコミットすると以下のようになります。

これでmasterブランチに移動しても、特定のコミットに移動した後で新しく分岐を作成したコミットへ参照できなくなるということはありません。