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.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.

  • Git subtree merge strategy or subtree command?
  • git: merging a subtree from one branch to another
  • Git: apply topic branch using rebase (without merge)
  • Undoing the merge in Git so that no commits from the other branch exist
  • Git: Merging to a branch from another branch using Kdiff3
  • GIT: What happens during branching?
  • 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:

            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. Should I set my default repo to my current working branch (1.0/develop), or the oldest branch that’s left (0.8/develop)?
    2. What modifications do I need to make to the config file to set the default repo?

  • How to configure Mac OS X term so that git has color?
  • How to make dependencies between merged patch and before merged patch in gerrit?
  • Storing a repository in subversion and git
  • git rebase -i with squash cannot detach HEAD
  • Git log *.java files and committers
  • Git style backup of binary files
  • 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 refs/remotes/origin/HEAD:

    git remote set-head origin -a
    Git Baby is a git and github fan, let's start git clone.