Reputation: 3635
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
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