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.8/master
, 0.9/develop
, 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:
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:
1.0/develop
), or the oldest branch that's left (0.8/develop
)?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 refs/remotes/origin/HEAD
:
git remote set-head origin -a
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With