なっく日報

技術やら生活やらのメモ

JavaからKotlinに変換するときにGitの履歴を残したい

何が問題か?

.javaのファイルを.ktに変換するのは IntelliJの「Convert Java File to Kotlin File」で一発だが、 それを普通にコミットすると履歴が残らない。

例:Hoge.javaHoge.ktに変換。その後コミットして、git log Hoge.ktHoge.javaだった際の記憶が失われている・・・

解決策

Renameと変換でコミットを分ける。

IntelliJの機能を使う

知らんかったけど一番カンタン。

f:id:nakimura:20200905174609p:plain

「Extra commit for .java > .kt renames」にチェックをつけると「Rename .java to .kt」というコミットに分けてくれる。

f:id:nakimura:20200905181649p:plain

コマンドでやる

ちょっとめんどい

git mv Hoge.java Hoge.kt
git commit -m 'Rename .java to .kt'
git revert HEAD --no-commit # 元の状態に戻すけどコミットはしない
# Convert Java File to Kotlin File して編集してコミット

雑なまとめ

  • Gitでリネームするときに履歴を残したい場合には気をつける。
  • そんでIntelliJはやっぱすごい

参考

stackoverflow.com