Rename file with Git
GitGithubGit 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".
-
I open and login like that:
ssh -T [email protected]
And I enter my passphrase.
-
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!)
> 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!
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.