mislav/hub · error

no remote found for branch %s

Error message

no remote found for branch %s

What it means

deducePushTarget determines the GitHub project (owner/repo) a branch should be pushed to by looking up the remote associated with the branch via branch.Repo.RemoteForBranch. If no remote is associated with the branch name, it cannot deduce the push target and throws this error.

Source

Thrown at commands/pr.go:454

		}
		return headBranch, headProject, nil
	}

	remoteURL, err := git.ParseURL(branchRemote)
	if err != nil {
		return nil, nil, err
	}
	headProject, err := github.NewProjectFromURL(remoteURL)
	if err != nil {
		return nil, nil, err
	}
	return headBranch, headProject, nil
}

func deducePushTarget(branch *github.Branch, owner string) (*github.Project, error) {
	remote := branch.Repo.RemoteForBranch(branch, owner)
	if remote == nil {
		return nil, fmt.Errorf("no remote found for branch %s", branch.ShortName())
	}
	return remote.Project()
}

func mergePr(command *Command, args *Args) {
	words := args.Words()
	if len(words) == 0 {
		utils.Check(fmt.Errorf("Error: No pull request number given"))
	}

	prNumber, err := strconv.Atoi(words[0])
	utils.Check(err)

	params := map[string]interface{}{
		"merge_method": "merge",
	}
	if args.Flag.Bool("--squash") {
		params["merge_method"] = "squash"

View on GitHub (pinned to 5c547ed804)

Solutions

  1. Push the branch to a remote: git push -u origin <branch>
  2. Verify remotes exist: git remote -v, and add origin if missing: git remote add origin <url>
  3. Pass the branch/remote explicitly if the command supports it (e.g. hub compare <user>:<branch>)

Example fix

# before
$ git remote -v
(no output)
# after
$ git remote add origin git@github.com:me/myrepo.git
$ git push -u origin my-feature
Defensive patterns

Strategy: validation

Validate before calling

branch=$(git rev-parse --abbrev-ref HEAD)
git config --get branch.$branch.remote >/dev/null || git config --get remote.origin.url >/dev/null || { echo "No remote for branch"; exit 1; }

Prevention

When it happens

Trigger: Called from compare and findCurrentPullRequest when the given (or current) branch has no corresponding git remote — no remote named after the branch's tracking remote and no 'origin' fallback.

Common situations: Running 'hub compare' or PR lookups on a branch that was never pushed; clones with remotes renamed (e.g. remote is 'upstream' not 'origin'); branches created locally without any push.

Related errors


AI-assisted analysis of mislav/hub@5c547ed804 (2026-09-01). Data as JSON: /api/errors/230331e6c27a654a. Report an issue: GitHub.