sgargan sgargan - 8 months ago 55
Git Question

Is it possible to move/rename files in git and maintain their history?

I would like to rename/move a project subtree in Git moving it from

/project/xyz


to

/components/xyz


If I use a plain
git mv project components
then all the file history for the
xyz project
gets lost.

Is there a way to move this such that the history is maintained?

Answer Source

Git detects renames rather than persisting the operation with the commit, so whether you use git mv or just a plain mv doesn't matter.

The log command, however, takes a --follow argument that continues history before a rename operation (that is, it searches for similar content using the heuristics):

http://git-scm.com/docs/git-log

To lookup the full history use the following command:

git log --follow ./path/to/file