DESIGN / CODE / INFRA / AI

解説

ファイルを改名する前の履歴も読みたい:git log --followを練習しよう

原稿の名前を変えたら、今のファイル名で調べた履歴に、以前の変更が出てこない。Gitで一つのファイルの改名前をたどる方法を確かめよう。

ファイルを改名する前の履歴も読みたい:git log --followを練習しよう
保存リストを見る →
この記事の道しるべ 6項目

原稿の名前を変えたら、今のファイル名で調べた履歴に、以前の変更が出てこない。Gitで一つのファイルの改名前をたどる方法を確かめよう。

この記事は、Gitを使える空の練習フォルダーで試す。三つの小さなコミットを自分で作り、実際の原稿やリモートリポジトリへは変更を加えないよ。

--followは、一つのファイルの改名をまたぐ

git logへパスを指定すると、そのパスに関わる履歴を絞って読める。--followを付けると、一つのファイルについて、改名前の履歴も引き続き一覧にできる。

git log --oneline --follow -- article.txt

公式資料が説明する対象は単一ファイル。フォルダー全体をまとめて追う指定として、そのまま使えるわけではないよ。

改名と編集を分けた練習先を作る

mkdir rename-log-practice
cd rename-log-practice
git init -q
git config user.name Practice
git config user.email practice@example.com
printf 'first\n' > draft.txt
git add draft.txt
git commit -qm base
git mv draft.txt article.txt
git commit -qm rename
printf 'second\n' >> article.txt
git add article.txt
git commit -qm edit

この利用者設定は練習リポジトリだけのもの。もともと同じ名前のフォルダーがあるなら、別の新しい名前に変えてから始めよう。手元の作業先で、既存ファイルを改名する必要はないよ。

表示を二通りで比べる

git log --format=%s -- article.txt
git log --format=%s --follow -- article.txt

この練習では、通常の指定はeditとrename、--follow付きはedit・rename・baseの順に表示された。編集部では実際に三コミットを作り、この結果を照合した。

コミット名 内容
base 改名前のdraft.txtを追加
rename 中身を変えず、article.txtへ改名
edit 改名後のファイルへ追記

履歴表示のコマンド自体は、作業中のファイルやコミットを変更しない。読み終えたら、statusでも作業先の状態を確認しておこう。

Gitに、改名という永久の札が付くわけではない

Gitの改名検出は、履歴の中の内容や類似性などから判断する。名前と内容を大きく同時に変えた場合などは、今回の単純な例と同じようにたどれないことがある。

そのため、--followで出なかったから古い内容が絶対に存在しない、と決めつけない。改名前のパス、当時のコミット、ブランチなど、別の手掛かりでも調べよう。

見つけたあと、すぐ復元しない

目的が読むだけなら、git showで当時のファイルを表示する方法もある。履歴を読むことと、今のファイルへ過去版を書き戻すことは別の操作だよ。

名前が同じ別ファイルや、分割・統合された原稿もある。必要な変更の時点と中身を確かめ、復元する場合は作業中の内容を守る手順へ進もう。

過去版を読む方法はgit show、一つのファイルを書き戻す練習はgit restoreへ。

参照した公式資料

確認日:2026年10月26日。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。