Git: Change Remote Repo URL - Stack Abuse

Git: Change Remote Repo URL

While I had initially thought that it's very rare for a remote repository to change location, it actually happens a lot more than I realized. A remote repo may change from one private server to another (like a NAS), from a personal GitHub repo to one in an organization, or maybe even from GitHub to GitLab.

When this happens, you'll need to change the URL for your remote repository in your local repo. In this short article, that's exactly what I'll cover.

First, let's get straight to the command you're here for:

$ git remote set-url <remote-repo> <remote-repo-url>

So if you're wanting to change the URL for "origin" to a new URL on my GitHub account, the command might look something like this:

$ git remote set-url origin https://github.com/scottwrobinson/foobar.git

Then you can verify that the URL has been updated using the remote command with the -v option, which is short for --verbose:

$ git remote -v
origin  https://github.com/scottwrobinson/foobar.git (fetch)
origin  https://github.com/scottwrobinson/foobar.git (push)

Setting Different Repos for Fetch and Push

As you can see in the output from remote -v, there are two lines shown, one pertaining to fetch and one for push. This means you can also set different URLs depending on what command you're running.

An example of this use-case is if you've forked someone's repo and want to continue to pull in updates from them, but then you only want to push changes to your forked version. Here is how you'd handle that:

$ git remote set-url <remote-repo> <original-repo-url>
$ git remote set-url --push <remote-repo> <forked-repo-url>

Notice the second command uses the --push option, which tells Git to only set that URL for push commands. In practice the command execution would look something like this:

$ git remote set-url origin https://github.com/example/foobar.git
$ git remote set-url --push origin https://github.com/scottwrobinson/foobar.git

Notice that the remote repo is named "origin" for both, and just the URL is different. In this example, https://github.com/scottwrobinson/foobar.git is the forked version.

Again, by running the remote -v command we can verify that the URL has been successfully changed:

Git Essentials

Check out this hands-on, practical guide to learning Git, with best-practices and industry-accepted standards. Stop Googling Git commands and actually learn it!

$ git remote -v
origin  https://github.com/example/foobar.git (fetch)
origin  https://github.com/scottwrobinson/foobar.git (push)

Using Different Protocols

One other thing I wanted to point out is that in all of the examples above I only showed HTTPS URLs, although any valid Git URL can be used. Git supports a large number of URL types, a few of which you can find here:

ssh://[email protected]/path/to/repo.git
git://host.com/path/to/repo.git
https://host.com/path/to/repo.git
file:///path/to/repo.git

So if for any reason you want to pull from a remote repo on GitHub, but then only push your changes to another repo accessible from within your file system, then Git is flexible enough for you to do that:

$ git remote set-url origin [email protected]:example/foobar.git
$ git remote set-url --push origin file://~/projects/foobar.git
Last Updated: June 6th, 2019

Improve your dev skills!

Get tutorials, guides, and dev jobs in your inbox.

No spam ever. Unsubscribe at any time. Read our Privacy Policy.

Want a remote job?

    Prepping for an interview?

    • Improve your skills by solving one coding problem every day
    • Get the solutions the next morning via email
    • Practice on actual problems asked by top companies, like:
     
     
     

    Git Essentials

    Check out this hands-on, practical guide to learning Git, with best-practices and industry-accepted standards. Stop Googling Git commands and actually learn it!

    © 2013-2021 Stack Abuse. All rights reserved.