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.

  • svn copy command
  • Proper git workflow scheme with multiple developers working on same task
  • How can I recover from “fatal: Out of memory? mmap failed: Cannot allocate memory” in Git?
  • Is it okay to merge individual files from one branch to another?
  • How to merge files from one branch's directory into another branch?
  • git workflow with 3 branches advice
  • 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
    • http://matthew-brett.github.io/pydagogue/gh_delete_master.html

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

  • What is the difference between staging and caching?
  • How do I remove a single file from the staging area of Git but not remove it from the index or undo the changes to the file itself?
  • Git trying to push file that isn't tracked
  • Authentication failed for Azure Git
  • Is it possible to have a tracked .gitignore AND an untracked .gitignore?
  • How do I get Putty to show color coding on git output?
  • 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.