解説
ファイルを改名する前の履歴も読みたい:git log --followを練習しよう
原稿の名前を変えたら、今のファイル名で調べた履歴に、以前の変更が出てこない。Gitで一つのファイルの改名前をたどる方法を確かめよう。

原稿の名前を変えたら、今のファイル名で調べた履歴に、以前の変更が出てこない。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で当時のファイルを表示する方法もある。履歴を読むことと、今のファイルへ過去版を書き戻すことは別の操作だよ。
名前が同じ別ファイルや、分割・統合された原稿もある。必要な変更の時点と中身を確かめ、復元する場合は作業中の内容を守る手順へ進もう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。