J. Pedro Ribeiro

Hello! My name is J. Pedro Ribeiro.
I’m a Brazilian web designer & front-end developer.
This website features some of my latest projects and my thoughts on html, css, design and anything web related.


2016 Jun

What’s the deal with renaming files in Git?

If you try renaming a file in your project, you might notice this weird behaviour when checking its status:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
(use "git add/rm ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)

deleted: README.md

Untracked files:
(use "git add ..." to include in what will be committed)

README-NEW.md

no changes added to commit (use "git add" and/or "git commit -a")

Why is this happening?

The short answer is: Git relies on names to know if whether a file is tracked or not.
When you rename a file, Git believes the original file got deleted and suddenly there’s a new file in which it knows nothing about. Hence the untracked status.

Alternative: rename with Git

If you want to avoid this behaviour, you could simply use the native Git command: git mv

$ git mv README.md README-NEW.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
(use "git reset HEAD ..." to unstage)

renamed: README.md -> README-NEW.md

Nice and easy.


Top