Delete git master branch on a private server (not GitHub)
I have a project hosted on my own personal git server (it is not on GitHub). The
master branch is a stale old cookie, and I don’t need it anymore.
A couple of months ago I created a
0.8/develop branch off of
master and since then we’ve gone through
0.9/master and we’re currently on
1.0/develop. I’d like to get rid of the
master branch, mainly because it doesn’t match the naming convention that we’ve established. It’s just a matter of housekeeping.
I found several related questions on SO, as well as a blog post, but they all seem to be specific to use of GitHub, and not my own private server:
- I can't delete a remote master branch on git
These both specifically say something to the effect of:
You need to go to the main GitHub page for your forked repository, and
click on the ‘Settings’ button.
Of course, this is not an option as I’m not using GitHub. I’m guessing that I can edit the contents of the config file in my bare repo to achieve the same results. Is that correct? The config file currently looks like this:
[core] repositoryformatversion = 0 filemode = true bare = true logallrefupdates = true ignorecase = true precomposeunicode = false sharedRepository = group [remote "origin"] url = file:///Library/WebServer/Documents/loupe fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
I have two questions:
- Should I set my default repo to my current working branch (
1.0/develop), or the oldest branch that’s left (
- What modifications do I need to make to the config file to set the default repo?
One Solution collect form web for “Delete git master branch on a private server (not GitHub)”
First decide which branch should be the default branch when the repository is cloned. I assume
new_master for this example.
On one of the clients create the
new_master branch on the remote repository, you may use anything for
master instead, e.g. a commit or another branch name, or skip this step if you already have a suitable branch on the remote.
git push origin master:new_master
The next step can’t be done from remote, so execute the command in your remote repository (e.g. using SSH):
cd /path/to/my_git_repo git symbolic-ref HEAD refs/heads/new_master
Alternatively, change the content of the
HEAD file directly.
Back on the client:
git fetch git remote show origin
You should see that the
HEAD points to
new_master instead of
master (or that
HEAD is ambiguous if you set
new_master to be
master). Now we can remove the old master:
git push origin :master
Git shouldn’t complain anymore about the deletion. Finally, set the local
git remote set-head origin -a