Skip to content

Branches and tags

Switch branches, publish them, fetch, and create tags.

Available on
  • Desktop
  • Web Portal

The current branch is shown in the Worktree header. Click it to open the branch switcher.

The branch switcher

The switcher lists every local and remote branch with a search box. Each row shows:

  • Whether it’s the current branch.
  • The configured upstream, if any.
  • A detached badge if you’re on a commit instead of a branch.
  • A prunable badge if the upstream is gone (the remote branch was deleted).

Click any branch to switch the current worktree to it. Right-click for per-branch actions:

  • Rename — only on the current branch.
  • Delete — requires confirmation; refuses unmerged branches without an extra force toggle.

To create a new branch, use New worktree (which also creates the branch) or use your shell. Plain “create branch but stay where I am” is intentionally out of scope here — the worktree-first model encourages a fresh tree per branch.

Pull, fetch, sync

The commit bar handles the common cases (Push, Pull, Sync, Publish — see Changes and commit). The Actions menu has the rest:

  • Pull — merge in upstream changes.
  • Pull with rebase — rebase your local commits onto upstream.
  • Sync — pull, then push.
  • Fetch — update remote-tracking refs without changing the working tree.

fetch is also worth running when you want the branch switcher to know about new remote branches without disturbing your working tree.

Publishing a branch

When a branch has no upstream, the commit bar shows Publish instead of Push. Click it; if you have only one remote it just runs git push -u <remote> <branch>. With multiple remotes you’ll be asked which to publish to.

Once published, the same button changes to Push and the branch switcher shows the upstream.

Tags

Two ways to create a tag:

  • From the History view, right-click any commit and choose Create tag.
  • From a dedicated Create Tag dialog reachable via the History toolbar.

The dialog asks for a tag name and an optional message (which makes it an annotated tag). Tags created this way push to the remote when you next push.