Switch on another branch (create if not exists), without checking if already exists?

Update Q3 2019 (Git 2.23): there now actually is a git switch command!

git switch -c aBranch 

You would need a similar alias though:

switchoc = "!f() { git switch $1 2>/dev/null || git switch -c $1; }; f"

Note the name of the alias: switchoc (for “switch or create”).
As jar pointed out in the comments:

Anyone trying this in 2021, note that you cannot shadow existing git commands with aliases.
Since git switch is a git command, this alias (named “switch“) won’t work. You must create your unique name for the alias, like “switchit” or something.


bgusach’s alias mentioned below in the comment is safer (based on Jiří Pavelka ‘s answer):

switch = "!f() { git checkout $1 2>/dev/null || git checkout -b $1; }; f"

git switch abranch

Original answer (2014) You can try:

git checkout -B foo

From git checkout man page:

If -B is given, <new_branch> is created if it doesn’t exist; otherwise, it is reset. This is the transactional equivalent of

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

As mentioned below, use it with caution as it does reset the branch, which is not always desirable.
If you did reset the branch by mistake with this command, you can easily revert to its previous state with:

git reset HEAD@{1}

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)