Git: ファイル名を変えたあとの履歴は git log --follow で追う
git log -- 新しい名前 はリネーム後のコミットしか出さない。git log --follow -- ファイル名 なら、名前を変える前の履歴までさかのぼって表示する。
使う場面
utils.jsをutils.tsに変えた・ディレクトリを移動したあと、そのファイルの昔の変更理由を調べたいとき- レビューや調査で「このファイルはいつ誰が作ったか」を知りたいとき
やり方
sh
# リネーム前も含めた履歴
git log --follow -- src/lib/date.ts
# 差分付き(リネームの前後で中身がどう変わったかも見える)
git log --follow -p -- src/lib/date.ts
# 名前の変遷だけ確認
git log --follow --name-status --oneline -- src/lib/date.ts- 毎回付けたくなければ
git config --global log.follow true(ファイルを 1 つだけ指定したとき自動で --follow になる)。
注意点
--followはファイル 1 つにしか使えない。ディレクトリや複数パスには効かない。- リネームは「中身が似ているか」で推測している。改名と同時に大きく書き換えると、別ファイル扱いになって辿れないことがある。改名だけのコミットを分けておくと追いやすい。
git blameは既定でリネームを辿る。行単位の由来なら blame、ファイル全体の変遷なら log --follow。