Rename file with Git

GitGithub

Git Problem Overview


I would like to rename file from README to README.md. What is the best practice to do that?


I have only one repo called "change-z-index".

  1. I open and login like that:

    ssh -T [email protected]

And I enter my passphrase.

  1. I try to rename the file like that:

    git mv README README.md git commit -m "renamed" git push origin master

It gives me an error saying bad source.

I think I need to select my repo first... it's name is "change-z-index". I have read manual many times, but still can't understand how to do it.

Git Solutions


Solution 1 - Git

As far as I can tell, GitHub does not provide shell access, so I'm curious about how you managed to log in in the first place.

$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not provide
shell access.

You have to clone your repository locally, make the change there, and push the change to GitHub.

$ git clone [email protected]:username/reponame.git
$ cd reponame
$ git mv README README.md
$ git commit -m "renamed"
$ git push origin master

Solution 2 - Git

Note that, from March 15th, 2013, you can move or rename a file directly from GitHub:

(you don't even need to clone that repo, git mv xx and git push back to GitHub!)

renaming

> You can also move files to entirely new locations using just the filename field.
To navigate down into a folder, just type the name of the folder you want to move the file into followed by /.
The folder can be one that’s already part of your repository, or it can even be a brand-new folder that doesn’t exist yet!

moving

Solution 3 - Git

You can rename a file using git's mv command:

$ git mv file_from file_to

Example:

$ git mv helo.txt hello.txt

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	renamed:    helo.txt -> hello.txt
#

$ git commit -m "renamed helo.txt to hello.txt"
[master 14c8c4f] renamed helo.txt to hello.txt
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename helo.txt => hello.txt (100%)

Solution 4 - Git

I had a similar problem going through a tutorial.

# git mv README README.markdown

fatal: bad source, source=README, destination=README.markdown

I included the filetype in the source file:

# git mv README.rdoc README.markdown

and it worked perfectly. Don't forget to commit the changes with i.e.:

# git commit -a -m "Improved the README"

Sometimes it is simple little things like that, that piss us off. LOL

Solution 5 - Git

Do a git status to find out if your file is actually in your index or the commit.

It is easy as a beginner to misunderstand the index/staging area.

I view it as a 'progress pinboard'. I therefore have to add the file to the pinboard before I can commit it (i.e. a copy of the complete pinboard), I have to update the pinboard when required, and I also have to deliberately remove files from it when I've finished with them - simply creating, editing or deleting a file doesn't affect the pinboard. It's like 'storyboarding'.

Edit: As others noted, You should do the edits locally and then push the updated repo, rather than attempt to edit directly on github.

Solution 6 - Git

You've got "Bad Status" its because the target file cannot find or not present, like for example you call README file which is not in the current directory.

Solution 7 - Git

This is might be relevant for some users; if you want to rename a file on GitHub (without command-line), all you can do is open your repository and press period '.', this will open a web version of vscdoe where you can make changes and commit.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBadr HariView Question on Stackoverflow
Solution 1 - GithammarView Answer on Stackoverflow
Solution 2 - GitVonCView Answer on Stackoverflow
Solution 3 - GitjaredwilliView Answer on Stackoverflow
Solution 4 - GitChris HowardView Answer on Stackoverflow
Solution 5 - GitPhilip OakleyView Answer on Stackoverflow
Solution 6 - GitRyan SView Answer on Stackoverflow
Solution 7 - Gitfirst userView Answer on Stackoverflow