Search notes:

git branch

List, create or delete branches.

Create a new branch

A new branch (in the following example named V1.1) is created with
git branch V1.1
This command does not change into the current branch. In order to work on the new branch, the branch must be checked out:
git checkout V1.1

git branch -b | git switch -c

A shortcut for both, creating a new branch and checking it out in one go, is to use the -b flag on git checkout:
$ git checkout -b tq84
Switched to a new branch 'tq84'
Alternatively, a new branch can also be created and made the current one with
$ git switch -c new-branch
Switched to a new branch 'new-branch'

Creating a branch does not change the state of the repository

Note that creating a branch and/or changing into it does not change the state of a repository. Before creating a new branch, git status reports a clean working tree with nothing to commit.
$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
After creating a new branch (and switching into it), git status still reports the same state (but does not say that the branch is up to date with the origin:
$ git checkout -b xyz
Switched to a new branch 'xyz'

$ git status
On branch xyz
nothing to commit, working tree clean

Show remote tracking branches

git branch -r shows remote tracking branches:
$ git branch -r
origin/main
origin/V1.1
origin/fixes
andy/main
pter/tests
The returned list consists of the name («alias») remote repository separated by a slash (/) from the name of the branch in that remote repository.

Delete a branch

Delete a branch with merged changes (must be in another branch?)
git branch -d V1.1
Delete a branch with unmerged changes (must be in another branch)
git branch -D V1.1

Delete branch on remote origin

If the deleted branch already exists on the remote origin, it can be deleted with one of the following variants
git push origin :V1.1
git push origin -d V1.1
git push origin -D V1.1
Note that the :V1.1 syntax refers to a refspec.

--set-upstream

git branch --set-upstream is deprecated in favor of git branch --track or git branch --set-upstream-to.
Compare with git push --set-upstream.
See also «origin» repository.

See also

Git internals: git branch
git commands

Index