git mvを忘れていたせいで……
ファイル名を変更するときにgit mvを使い忘れていたせいで、旧ファイル名で全行削除の変更と新ファイル名で全行新規追加の変更ができてしまった。
去年の12/24にgit mvについて書いていたのを忘れていたようだ。
ファイル名を変更したファイルが2つあり、色々ファイルを編集したあとにそのことに気づき、以下の手順をとった。
- 新ファイルの中身をすべて別の場所にコピーしておく
git stashで差分をすべて一度退避させる- 旧ファイルを
git mvで変更する - ファイル名を変更したあとにコピーしておいた新ファイルの中身をすべてペーストする
git stash pop
2つのファイルがあったうち、1つは一切中身を変更していなかったのだが、そちらは正しくgit mvされた。
だが中身を変更していたファイルは上述のように全削除と全更新のファイルがそれぞれできてしまった。
ファイル名を変更する場合はまずgit mvしてファイル名の変更だけをコミットすべきと学び、今後は確実にそうやっていきたいと思う。
だが、変更予定がないつもりでファイルを編集したあとに「ファイル名を変更したほうがいいな」となることも可能性としてはあると思う。
その場合はどうするか。
ファイル名を変更したいファイル以外の変更はいったんコミットしてしまい、差分があるファイルがひとつだけになった状態で、そのファイルの中身を別の場所にコピーしておき、git stashしたあとにgit stash dropしてしまい、そこからgit mvしてファイル名を変更したあとにコピーしていた内容をペーストすればいけそう。
これでいいのか……?やはり最初にgit mvするのが大事っぽいな……。