'git init -b <branch name>' command in terminal is throwing an 'unknown switch' error

38,789

Solution 1

git 2.24 doesn't have option -b/--initial-branch. It was added in git 2.28. You need to upgrade to use the option.

Or, as @matt said, create a repo and then rename the branch:

git init repo
cd repo
git branch -m master slave

Solution 2

The -b flag is only available in version 2.28 or later, you need to upgrade your Git.

On debian-based Linux systems such as Ubuntu, do the following:

sudo add-apt-repository -y ppa:git-core/ppa
sudo apt update
sudo apt install git -y

Solution 3

prior to git v2.28

git init                              # ①
git symbolic-ref HEAD refs/heads/main # ②

① After git init, the branch master does not actually exist. Branches get created only when they have at least one commit.

② This updates .git/HEAD to contain ref: refs/heads/main instead of ref: refs/heads/master. Alternatively, git checkout -b main.

git v2.28+

As @phd said, the -b/--initial-branch option was added in git v2.28. git 2.28 also introduces a config option to specify your preferred default branch:

git config --global init.defaultBranch main

Learn more about the new init.defaultBranch setting in GitHub's blog post.

Solution 4

In case you need to install the latest git version (in Ubuntu)

sudo add-apt-repository -y ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git -y

Ref: https://gist.github.com/YuMS/6d7639480b17523f6f01490f285da509

Share:
38,789
pjgearing
Author by

pjgearing

Updated on September 15, 2021

Comments

  • pjgearing
    pjgearing almost 3 years

    I am trying to add an existing project to GitHub using the command line. I am in the relevant working directory in the terminal and am trying to use the git init -b main command.

    Initially, I was getting an error relating to xcode:

    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    

    I tried xcode-select --install but the software was unavailable from the update server, so I downloaded 'Command Line Tools for Xcode 12' from https://developer.apple.com/download/more/.

    Now on entering git init -b main I am getting the following:

    error: unknown switch `b'
    usage: git init [-q | --quiet] [--bare] [--template=<template-directory>] [--shared[=<permissions>]] [<directory>]
    
    --template <template-directory>
                          directory from which templates will be used
    --bare                create a bare repository
    --shared[=<permissions>]
                          specify that the git repository is to be shared amongst several users
    -q, --quiet           be quiet
    --separate-git-dir <gitdir>
                          separate git dir from working tree
    

    I am running git version: 2.24.3 (Apple Git-128)

    Any help much appreciated!

    • matt
      matt over 3 years
      Just say git init and then change master to main if you want to.
  • Robin A. Meade
    Robin A. Meade over 3 years
    error: refname refs/heads/master not found. fatal: Branch rename failed Instead: cd repo; git checkout -b main
  • fguillen
    fguillen almost 3 years
    @RobinA.Meade I saw that a commit must already exist so the branch master exists