Skip to content

Choose remote for Pull and Push when a repo has multiple remotes #61

Description

@robertorinaldi-dev

What problem does this solve in your daily Git work?

Many repos use more than one remote (e.g. GitLab as the team source of truth and GitHub as a mirror, or origin + upstream on a fork). AngKorGit’s Pull / Push actions always follow the branch upstream (and optionally pushRemote via git config), with no way in the UI to pick which remote to use for that single operation.

That means:

  • You cannot Pull from GitHub if the branch tracks GitLab (or the other way around) without changing git config or dropping to the terminal.
  • Dual-remote workflows (pull from A, push to B) require one-shot git config setup that AngKorGit never surfaces, and still do not cover “sometimes I need the other remote”.

Proposed solution

When more than one remote exists, let Pull and Push offer a remote choice, for example:

  • A small menu / dropdown on the Pull and Push buttons (“Pull from…”, “Push to…”) listing remotes
  • Or a remote picker in the command palette / dialog before the operation
  • Remember last used remote per branch as a convenience default, while still allowing override

Ideally also show which remote the default Pull/Push will hit (e.g. status bar or tooltip: Pull → GitLab, Push → origin).

Alternatives you've considered

  • branch.<name>.remote + branch.<name>.pushRemote in git config — works for a fixed “pull A / push B” setup, but is invisible in the app and still blocks ad-hoc pull/push from the other remote.
  • Terminal: git pull origin main / git push GitLab main — fine as escape hatch, but defeats using AngKorGit for everyday multi-remote work.

Extra context

Related but not the same: fetch-all-remotes (#18 / #39) and upstream/fork UX (#26). This request is specifically about choosing the remote for Pull and Push.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions