この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
正直に言うと、第一印象は「またエイリアスか何かじゃないか」でした。
git logというコマンドが30年以上前から存在して、Linuxの世界でほぼ標準的に使われているのに、今さら新しいコマンドが必要なのか、と。
でも少し調べてみると、その懐疑心はある意味で的外れでした。git 2.54で追加された「git history」は、単純なエイリアスでも置き換えでもなく、別の切り口から「履歴の見方」を再設計しようとした試みです。
この記事では、git historyコマンドとは何か、git logとの違い、実際のコマンド例、現場での使い分けについて解説します。20年以上Linuxサーバーを運用してきた経験から、「実際のところどう使うのか」という実務目線でお伝えします。
この記事のポイント
・git historyはgit 2.54で追加された、履歴閲覧に特化した新しいサブコマンド
・git logとの最大の違いは「パスフィルタが標準動作で有効」な点にある
・現場ではgit logとの使い分けが重要で、全体把握はlog、特定ファイル追跡はhistoryが向く
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
git historyとは何か
git historyは、Git 2.54でリリースされた比較的新しいサブコマンドです。正式なリリースノートでは「ファイルやディレクトリの変更履歴をより直感的に閲覧するためのインターフェイス」として説明されています。端的に言えば、「特定のファイルやパスに関する変更履歴を追いやすくする」ことを主目的に設計されています。
git logが「コミット全体の流れを見るためのコマンド」として設計されているのに対し、git historyは「この1ファイルがどう変わってきたかを追うためのコマンド」という立ち位置です。
追加の背景には、大規模リポジトリでのgit log --follow(ファイルリネームを追跡するオプション)の使い勝手の悪さがあります。--followは有用なのですが、他のオプションと組み合わせた時の挙動が複雑で、初心者が意図した通りに使いこなすのが難しいという課題がありました。
git logとgit historyの違い
実際に使い始めると、git logとgit historyは「似ているようで目的が違う」と感じます。| 項目 | git log | git history |
|---|---|---|
| 主な目的 | コミット全体の流れを把握する | 特定ファイル・パスの変更履歴を追う |
| パスフィルタ | 明示的に -- パス を付けないと有効にならない | 引数で渡したパスが標準的にフィルタ対象になる |
| リネーム追跡 | --follow オプションが必要(デフォルトは無効) | リネーム追跡がデフォルトで有効 |
| 出力フォーマット | コミットIDや日時の生情報が中心 | よりファイル変更に特化した要約表示が可能 |
| 歴史 | 30年以上の実績あり | Git 2.54で新規追加 |
例えば、かつて
deploy.sh という名前だったファイルが deploy-prod.sh にリネームされた場合、git logでは --follow オプションを付けないとリネーム前の変更履歴が表示されません。git historyは、このリネーム追跡をデフォルトで有効にしているため、ファイル名が変わっていても一連の変更として追跡できます。実際のコマンド例・使い方
1. 基本的な使い方
特定ファイルの変更履歴を表示する場合は以下のようにします。# 特定ファイルの変更履歴を表示 git history deploy.sh # ディレクトリ配下の変更履歴を表示 git history src/ # ブランチ・コミット範囲を絞って表示 git history main~10..HEAD deploy.sh
git log -- deploy.sh と書いていた箇所が git history deploy.sh と書けるイメージです。2. diff付きで変更内容を確認する
変更の履歴だけでなく、実際に何が変わったかを同時に確認したい場合は以下です。# 差分も一緒に表示 git history -p deploy.sh # 差分の統計情報を表示(どのくらい変更されたか) git history --stat deploy.sh
-p オプションはgit logでも使えますが、git historyではパスフィルタが自動で効いているため、無関係なコミットが混入しません。3. リネームを跨いで履歴を追う
これがgit historyの強みの一つです。ファイルがリネームされていても以下のように追跡できます。# リネーム前後を含めた履歴を表示(デフォルトで有効) git history deploy-prod.sh # リネーム追跡をあえて無効にする場合 git history --no-follow deploy-prod.sh
git log --follow -- deploy-prod.sh と書く必要があります。4. 出力を整形して確認する
実務では、コミットIDと日時とメッセージだけをコンパクトに確認したいケースが多いです。# コンパクトなone-line形式で表示 git history --oneline deploy.sh # 著者と日時も含めて表示 git history --format="%h %ad %an: %s" --date=short deploy.sh
a3c1f02 2026-03-15 tomohiro: fix: 本番デプロイ前のバリデーション追加 b7d2e11 2026-02-28 tomohiro: refactor: デプロイスクリプトを汎用化 c5f9a87 2026-01-20 admin: feat: 初期デプロイスクリプト追加
現場での使い分け判断基準
私が20年以上の現場経験で感じているのは、「git logとgit historyは競合しない」ということです。目的によって使い分けるのが正しいスタンスだと思っています。以下が私なりの判断基準です。
・git logを使う場面:リポジトリ全体のコミット履歴を流し読みしたい、直近の変更を確認したい、特定のコミットを探したい
・git historyを使う場面:特定のファイルがいつ誰によって変更されたかを追いたい、リネーム前後を含めて変更履歴を確認したい、「このファイルのバグはどこから来たか」を調査したい
特にトラブル対応時に使い分けが活きてきます。障害が起きた時、まず
git log で「最近何が変わったか」を広く把握し、怪しいファイルが絞れたら git history で深掘りする、という流れが効率的です。またチーム開発では、ファイルの変更理由を追う作業が頻繁に発生します。「なぜここの処理がこうなっているのか」をコード履歴から読み解く作業に、git historyは向いています。Gitの基本的な使い方を押さえた上でgit historyを使いこなすことで、コードレビューや調査の質が上がります。
一方で、git historyはまだ比較的新しいコマンドです。チームによってはGitのバージョンが古く、git historyが使えない環境もあります。
git --version で2.54以上であることを確認してから使ってください。git historyが使えない・動かない時の対処法
git historyを使おうとした時に遭遇しやすいトラブルと対処法を整理します。「git: 'history' is not a git command」と表示される場合
Gitのバージョンが2.54未満の場合に発生します。# まずバージョンを確認する $ git --version git version 2.39.2 # ← 2.54未満ならgit historyは使えない # RHEL系でGitを更新する場合 $ sudo dnf update git # Ubuntu/Debianで更新する場合 $ sudo apt update && sudo apt upgrade git
git log --follow -- ファイル名 で代替してください。リネーム追跡が期待通りに動かない場合
Gitはリネームをヒューリスティックで判定するため、大幅に変更されたファイルのリネームは追跡できないことがあります。# リネーム検出の類似度閾値を調整する(デフォルトは50%) $ git history -M80% ファイル名 # 80%以上の類似度でリネームとみなす $ git history -M30% ファイル名 # 30%以上でリネームとみなす(緩めに設定)
git logとの後方互換性
重要な点として、git historyはgit logを置き換えるものではありません。git logはコミット全体のナビゲーションツールとして引き続き中心的な役割を担います。Gitのブランチ管理やマージの確認はgit logが圧倒的に向いています。
git historyは「ファイル単位の変更追跡」という特定の用途を解決するために追加されたコマンドと考えると、無理なく位置づけられます。
まとめ
git 2.54で追加されたgit historyコマンドについて解説しました。| やりたいこと | 使うコマンド |
|---|---|
| リポジトリ全体の最近の変更を確認 | git log --oneline -20 |
| 特定ファイルの変更履歴を追跡 | git history ファイル名 |
| リネーム前後を含めて追跡 | git history ファイル名(デフォルトで有効) |
| 変更内容の差分も確認 | git history -p ファイル名 |
| コンパクトな一行表示 | git history --oneline ファイル名 |
Linux環境でのGit活用に興味がある方は、下記のLinuxサーバー構築入門マニュアルも参考にしてください。現場で使えるGitの基本から応用まで体系的に学べます。
Gitを含むLinux運用スキルを体系的に学びたい方へ
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます