⬡Branches
The full branch lifecycle from the tree on the left of the main panel: list, switch, create, rename (locally, on the remote, or a whole folder at once), delete, and find which branches contain a commit.
Branch tree & list branches
Local and remote-tracking branches with folder-style grouping for slashed/branch/names.
Entry points
- Branch paneThe tree in the main panel's left region (
BranchPane), with LOCAL and REMOTE sections. - Branch pickerThe toolbar branch pill / the rail Checkout button open a searchable list.
What it shows per branch
- Hydra-head icon on every branch, with a gradient fill on the checked-out branch (the current-branch marker).
- Default-branch shield — resolved from
origin/HEAD(real data, never guessed by name; absent when there's no remote).fetchrefreshesorigin/HEADso a remote default change heals itself. - Ahead/behind counts —
↑2 ↓1(amber ahead / cyan behind); in-sync branches show nothing. - Gone / orphan detection for branches whose upstream was deleted.
- Folder nodes for shared prefixes; expand/collapse to navigate.
- Type-to-filter from the pane header filters every section at once.
Checkout / switch checkout
Entry points
- Action railCheckout button → searchable branch picker (the IntelliJ "Branches" popup equivalent).
- ToolbarBranch pill → filter list → click a branch.
- Branch context menuRight-click a branch → Switch to Branch (a plain checkout, no pull; disabled for the current branch).
- Commit menuCheckout Revision checks out a commit directly (detached HEAD).
What happens next
- Go runs checkout with the chosen branch (or hash).
- On success the panel reloads — the new branch becomes current, the log re-scopes, and the status badge updates.
- Checking out a commit reports detached HEAD, which raises the rescue banner.
Create branch branch.create
Entry points
- Action railNew branch button.
- Branch context menuNew Branch from '<branch>'… — branches off that branch.
- Commit context menuNew Branch… — branches off the selected commit (passes
from: hash).
What happens next
- You're prompted for a branch name.
- Go runs branch.create with
{ name, from? }— optionally from a ref or commit hash. - The new branch appears in the tree and the panel reloads.
Rename — local · remote · folder
Entry points
- Branch context menuRename… on a branch.
- Folder context menuRight-click a branch folder → rename the whole prefix.
What happens next
- Local rename branch.rename — renames the branch with
{ from, to }. - Remote propagation branch.rename.remote — if the branch had an upstream, HydraGit offers to push the new name with tracking and delete the old remote ref.
- Folder rename branch.rename.folder — renames every local branch under the prefix at once, preserving each suffix (e.g.
feature/*→feat/*).
iRemote rename/delete pushes run under a 30-second timeout so a credential prompt with no terminal can't freeze the panel.
Delete — local · remote
Entry points
- Action railDelete branch button (red).
- Branch context menuDelete (red; disabled for the current branch).
What happens next
- Local delete branch.delete with
{ name, force }. - Remote delete branch.delete.remote — deletes the branch on the remote via
push <remote> --deleteand prunes the local tracking ref.
Branches containing a commit branch.containing
Answers "which branches include this commit?" for the selected commit.
- Triggered from commit context where relevant; Go runs branch.containing with
{ commit }. - Returns the set of branches whose history contains that commit.