mislav/hub · error

Aborted: could not find any git remote pointing to a GitHub

Error message

Aborted: could not find any git remote pointing to a GitHub repository

What it means

MainProject() iterates all remotes trying remote.Project(), which parses the remote URL into a GitHub Project. If every remote either fails to parse or is not a recognized GitHub repository, this error is returned. CurrentProject falls back to MainProject after UpstreamProject fails, so this surfaces when no remote is GitHub-based.

Source

Thrown at github/localrepo.go:256

func (r *GitHubRepo) MainRemote() (*Remote, error) {
	r.loadRemotes()

	if len(r.remotes) > 0 {
		return &r.remotes[0], nil
	}
	return nil, fmt.Errorf("no git remotes found")
}

func (r *GitHubRepo) MainProject() (*Project, error) {
	r.loadRemotes()

	for _, remote := range r.remotes {
		if project, err := remote.Project(); err == nil {
			return project, nil
		}
	}
	return nil, fmt.Errorf("Aborted: could not find any git remote pointing to a GitHub repository")
}

func (r *GitHubRepo) CurrentProject() (project *Project, err error) {
	project, err = r.UpstreamProject()
	if err != nil {
		project, err = r.MainProject()
	}

	return
}

func (r *GitHubRepo) UpstreamProject() (project *Project, err error) {
	currentBranch, err := r.CurrentBranch()
	if err != nil {
		return
	}

	upstream, err := currentBranch.Upstream()

View on GitHub (pinned to 5c547ed804)

Solutions

  1. Add a remote pointing at a GitHub (or GitHub Enterprise) repository
  2. Fix remote URLs so they parse as GitHub URLs: git remote set-url origin git@github.com:owner/repo.git
  3. If using GitHub Enterprise, configure the enterprise host so its URLs are recognized
  4. Verify with `git remote -v` that at least one URL is a github.com/GHE URL

Example fix

// before
git remote set-url origin https://gitlab.com/org/repo.git
p, err := repo.CurrentProject() // Aborted: ...
// after
git remote set-url origin https://github.com/org/repo.git
p, err := repo.CurrentProject() // works
Defensive patterns

Strategy: try-catch

Validate before calling

out, _ := exec.Command("git", "remote", "get-url", "origin").Output()
origin := strings.TrimSpace(string(out))
if !strings.Contains(origin, "github.com") { // or your GHE host
    // remote is not GitHub-based; hub operations will fail
}

Try / catch

project, err := repo.CurrentProject()
if err != nil {
    if strings.Contains(err.Error(), "could not find any git remote pointing to a GitHub repository") {
        return nil, fmt.Errorf("this repo has no GitHub remote; set origin to a github.com URL")
    }
    return nil, err
}

Prevention

When it happens

Trigger: Calling MainProject() (via CurrentProject) when all remotes point at non-GitHub hosts (GitLab, Bitbucket, bare file paths) or their URLs cannot be parsed as GitHub projects at all.

Common situations: Working on a GitLab/Bitbucket mirror but running hub commands; remotes configured as plain local paths or unresolvable SSH aliases; GHE host not configured so URLs aren't recognized; typo in remote URL.

Related errors


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