Q: How to keep the change log in git files when refactoring in IntelliJ? When I refactor the class in IntelliJ the git looses the track of old log of the file? Is there a way to refactor the file so that it keeps the log, or am I missing something?
I am checking the log of the file in the SourceTree, but I imagine it is the same for everything.

A: Move/Rename is handled automatically by Git and log should be kept if git detected that it was actually a move. It doesn't matter whether you rename from IDEA, terminal or file manager.
See also Why does git not "track" renames? and comments in the related bug report.

A: This approach, although probably not what you would like to hear, helped git detect renames (and ultimately understand the real file history) during a pretty big repackaging that I was doing (renaming package com.something to com.somethingelse with ~300 files inside it):


*

*Do the renaming only outside of IntelliJ using "git mv" e.g. "git mv MyProject\src\main\java\com\something MyProject\src\main\java\com\somethingelse"

*Commit

*Do the repackaging changes in the source files using a regular IntelliJ text-replace - Edit > Find > Replace in path and replace all occurrences of com.something with com.somethingelse.

*Commit

