Git Remotes

Interact with remote repositories directly from grüt. Fetch updates, pull changes, push commits, and manage multiple remotes with single-key commands.

grüt
GitInfo panel showing configured remotes with fetch and push URLs
Remotes tab in the GitInfo panel

The Remotes Panel

The remotes panel lists every configured remote for the current repository. Each entry shows:

  • Remote name — e.g., origin, upstream, fork
  • URL — the fetch/push URL for the remote
  • Tracking branches — which local branches track branches on this remote

Keybindings

Remote Operations

KeyAction
FFetch from remote — update tracking branches
pPull from remote — fetch and integrate changes
PPush to remote — send local commits upstream

Fetching

Press F to fetch from the remote. This is a global keybinding — it works from any panel, not just the remotes tab. Fetching downloads new commits, branches, and tags from the remote repository without modifying your working tree or local branches. It only updates the remote tracking refs (e.g., origin/main).

After a fetch, the commit log and branch panel update to show any new remote commits. You can then decide whether to merge, rebase, or cherry-pick those changes.

Pulling

Press p to pull from the tracking remote for the current branch. A pull is equivalent to a fetch followed by an integration step (merge or rebase, depending on your configured merge method).

[git]
worktree_merge_method = "merge"   # pull uses this strategy

If the pull results in conflicts, grüt enters conflict resolution mode — the same workflow used for merges and rebases.

Pushing

Press P to push local commits to the tracking remote. grüt pushes the current branch to its configured upstream. If no upstream is set, grüt prompts you to select a remote and set tracking.

If the push is rejected (e.g., the remote has new commits), grüt shows the error and suggests pulling first. Force-push is available through the command palette:

:push --force-with-lease

Multiple Remotes

Many workflows use more than one remote. A typical open-source setup:

  • origin — your personal fork on GitHub
  • upstream — the original repository you forked from

You can add and manage remotes through the command palette or via standard git commands in grüt's integrated terminal:

# Add a new remote
git remote add upstream https://github.com/original/repo.git

# Verify remotes
git remote -v

All configured remotes appear in the remotes panel immediately after being added.

Push/Pull Targets

Push and pull operations always target the tracking remote for the current branch. If your branch feature/auth tracks origin/feature/auth, pressing P pushes to origin and pressing p pulls from origin.

To change the tracking remote for a branch, use the command palette:

:branch --set-upstream-to=upstream/main