[Fixed] fatal: remote origin already exists: Step-by-Step Troubleshooting Guide

Overview & Root Cause Summary: The error fatal: remote origin already exists occurs when running git remote add origin <url> in a Git repository where a remote alias named origin is already registered in the local .git/config. This typically happens when re-targeting a cloned repository to a new remote host, running GitHub setup snippets multiple times, or accidentally using the name origin instead of upstream on a repository fork.

Understanding the Root Causes

  • Pre-existing Cloned Remote: Repositories cloned via git clone automatically designate the clone source as origin, making subsequent git remote add origin calls redundant and invalid.
  • Repeated CLI Setup Snippets: Pasting quick-start instructions from GitHub, GitLab, or Bitbucket into an already initialized or configured project.
  • Forking & Upstream Misalignment: Intending to track the original parent repository as a secondary source (conventionally named upstream) while accidentally using the name origin.
  • Stale Remote Configuration: An earlier failed remote setup or incorrect URL that was saved in .git/config without being cleaned up.

Step 1: Quick Fix (Update Existing Remote with set-url)

Instead of trying to add a duplicate remote, re-point the existing origin reference to your new repository URL.

# Check the current URL configured for origin:
git remote -v

# Update origin to the new HTTPS or SSH URL:
git remote set-url origin https://github.com/your-username/your-repo.git

# Or with SSH:
git remote set-url origin git@github.com:your-username/your-repo.git

Step 2: Remove and Re-add, or Add as Upstream for Forks

If you prefer a fresh configuration or are working with an open-source fork, remove the conflicting remote or assign a distinct alias.

# Option A: Remove the existing origin alias and re-add cleanly:
git remote remove origin
git remote add origin https://github.com/your-username/your-repo.git

# Option B: Keep origin for your fork and add the parent repository as upstream:
git remote add upstream https://github.com/original-owner/original-repo.git

Step 3: Direct Configuration Audit & Multi-Remote Push Setup

Inspect your Git configuration directly to verify remote endpoints or configure dual-push destinations.

# 1. View all configured remote settings in your local repository config:
git config --get-regexp remote\.origin\..*

# 2. Add an additional push destination under the same origin alias (mirroring):
git remote set-url --add --push origin https://gitlab.com/your-username/your-repo.git

# 3. View the full configuration file directly:
git config --local -e

Verification & Testing Steps

Confirm that your remotes point to the intended URLs and verify network communication.

# 1. Verify remote aliases and fetch/push target URLs:
git remote -v

# 2. Query the remote repository to inspect tracking branches:
git remote show origin

# 3. Perform a dry-run fetch or push to ensure credentials and connectivity:
git fetch origin

Summary Comparison Table

Troubleshooting Approach Command Config Modification Recommended Scenario
Update Existing URL git remote set-url origin <url> Overwrites URL only Fixing typos or changing repository target
Remove and Re-add git remote remove origin && git remote add origin <url> Full reset of remote refs Clearing corrupted or malformed remote tracking
Add Upstream Remote git remote add upstream <url> Creates new secondary alias Managing open-source forks and parent repos
Dual-Push Mirroring git remote set-url --add --push origin <url> Appends secondary push URL Synchronizing pushes across multiple Git hosts

Leave a Reply

Discover more from Victor's room

Subscribe now to keep reading and get access to the full archive.

Continue reading