Git 2.54で追加された『git history』コマンドとは何か|git logとの違いを現役Linuxエンジニアが解説

HOMEリナックスマスター.JP 公式ブログLinux学習ガイド > Git 2.54で追加された『git history』コマンドとは何か|git logとの違いを現役Linuxエンジニアが解説
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「git historyというコマンドが追加されたと聞いて、最初は懐疑的でした」
正直に言うと、第一印象は「またエイリアスか何かじゃないか」でした。
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 2.54で追加された『git history』コマンドとは何か|git logとの違いを現役Linuxエンジニアが解説
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

git historyとは何か

git historyは、Git 2.54でリリースされた比較的新しいサブコマンドです。

正式なリリースノートでは「ファイルやディレクトリの変更履歴をより直感的に閲覧するためのインターフェイス」として説明されています。端的に言えば、「特定のファイルやパスに関する変更履歴を追いやすくする」ことを主目的に設計されています。

git logが「コミット全体の流れを見るためのコマンド」として設計されているのに対し、git historyは「この1ファイルがどう変わってきたかを追うためのコマンド」という立ち位置です。

追加の背景には、大規模リポジトリでのgit log --follow(ファイルリネームを追跡するオプション)の使い勝手の悪さがあります。--followは有用なのですが、他のオプションと組み合わせた時の挙動が複雑で、初心者が意図した通りに使いこなすのが難しいという課題がありました。

Git 2.54で追加された『git history』コマンドとは何か|git logとの違いを現役Linuxエンジニアが解説 - 解説1

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に慣れている人なら、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で同じことをする場合は 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が固定されているケースがあります。その場合は 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との違いを現役Linuxエンジニアが解説 - まとめ

まとめ

git 2.54で追加されたgit historyコマンドについて解説しました。
やりたいこと 使うコマンド
リポジトリ全体の最近の変更を確認 git log --oneline -20
特定ファイルの変更履歴を追跡 git history ファイル名
リネーム前後を含めて追跡 git history ファイル名(デフォルトで有効)
変更内容の差分も確認 git history -p ファイル名
コンパクトな一行表示 git history --oneline ファイル名
git historyは「あって当然」のコマンドが正式化されたという印象を受けますが、リネーム追跡のデフォルト有効化など、実務での細かい使い勝手が改善されています。Gitのバージョンを2.54以上に更新できる環境であれば、ファイル単位の変更調査に活用してみてください。

Linux環境でのGit活用に興味がある方は、下記のLinuxサーバー構築入門マニュアルも参考にしてください。現場で使えるGitの基本から応用まで体系的に学べます。

Gitを含むLinux運用スキルを体系的に学びたい方へ

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


Linux無料マニュアル(図解60P) 名前とメールで30秒登録