Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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):

  1. 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"
  2. Commit
  3. 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.
  4. Commit
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top