wanghao
wanghao

Reputation: 3635

git status shows rename but it's incorrect

I use Rails to develop. I have a controller named cpc_admin_controller.rb the full path is app/controllers/cpc_admin_controller.rb, and a helper named admin_helper.rb the full path is app/helpers/admin_helper.rb. Then I remove a method from admin_helper.rb to cpc_admin_controller.rb, and save, use git to commit.

But the git show the messages as follows

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   renamed:    app/helpers/admin_helper.rb ->    app/controllers/cpc_admin_controller.rb
#   modified:   app/helpers/admin_helper.rb

I think it should show two modified like this, not the renamed

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   app/controllers/cpc_admin_controller.rb
#   modified:   app/helpers/admin_helper.rb

Someone can help me, tell me why?

Upvotes: 6

Views: 5007

Answers (1)

VonC
VonC

Reputation: 1329692

As illustrated in this thread

Git doesn't care about individual files or renames, it tracks whole trees.
What it shows as a rename is just its best guess based on the contents of the two files.

Git status does perform rename detection using a heuristic.
But once you commit, you will see the two files are kept separate.

Upvotes: 8

Related Questions