Gitの3つの魔法 - Git log、Git diff、Git reflogを絵本で理解しよう
git-logo
スポンサーリンク

今回はGitの変更履歴を確認するときに利用する、次のコマンドについてのエントリーです。

  • git log
  • git reflog
  • git diff

それぞれの用途をただ説明するのは分かりにくいので、絵本を例に交えて解説しています。

git log

git logコマンドは、リポジトリに積まれたcommitの順番を時系列で追跡することができます。誰が何をしたか、いつどんな変更がリポジトリに対して行われたかを確認したい時に使いましょう。

また、複数人で作業する場合、コードの変更を把握することができるため、チーム開発においても役立ちます。

絵本で例えると、物語がどのように進行したのかを確認したい時に使うイメージですね。

git logのコマンド例

# コミット履歴を表示
$ git log

# コミット履歴をグラフ形式で表示
$ git log --graph --oneline --decorate --all

# 11ヶ月前から昨日までのコミット履歴を表示する
$ git log --since="11 month ago" --until="yesterday"

# 特定のチームメンバーによるコミットだけを表示
$ git log --author="Web Ushijima"

git reflog

git reflogコマンドは、リポジトリで自分がどのような操作を行ったのか確認することができます。

過去の状態に戻ったり、間違った操作を修正したりする際にはgit reflogで確認した情報が必要になります。

絵本で例えると、絵本の作者自身がどのような制作過程をしてきたかを確認するイメージですね。

git reflogのコマンド例

# 自分の操作履歴を表示
$ git reflog

# feature/hogehogeブランチにおける自分の操作履歴表示
$ git reflog show feature/hogehoge

# reflogで表示する際のタイムスタンプを日付のフォーマットを指定して表示する
# 以下であれば、ローカルタイム(実行するマシンでのタイムゾーン)での表示となる
$ git reflog --date=local

git diff

git diffコマンドは、ファイルの変更内容を確認するためのコマンドです。

絵本で例えると「間違い探し」のようなもので、変更が加えられた箇所を可視化してくれます。

git diffのコマンド例

# commitAとcommitBの差分を確認する
$ git diff commitA commitB

# 現在のブランチとfeature/hogeブランチ間において変更されたファイル名だけを表示
$ git diff --name-only feature/hoge

# 現在のブランチとfeature/hogeブランチ間において変更されたファイルの一覧と、追加および削除された行数を表示
$ git diff --stat feature/hoge

# 現在のブランチとfeature/hogeブランチ間において以下の条件で表示する
#   - 追加された行は緑色で、削除された行は赤色で色分けして表示
#   - 行末の空白を無視して差分を表示
$ git diff --color --ignore-space-at-eol feature/hoge

git log/git reflog/git diffの違い

いずれも変更履歴を確認するものですが、用途や使い方が異なるので表にまとめてみました

コマンド用途
git logブランチのコミット履歴を確認
git reflog現在のブランチの先頭コミット(HEAD)に関連する操作の履歴を確認(git statusやgit diffなどは対象外)
git diffファイルの操作履歴
スポンサーリンク
おすすめの記事