How can I determine the URL that a local Git repository was originally cloned from?


Should you want this for scripting purposes, you can get only the URL with

git config --get remote.origin.url

I pulled a project from GitHub a few days ago. I've since discovered that there are several forks on GitHub, and I neglected to note which one I took originally. How can I determine which of those forks I pulled?

To summarize, there are at least four ways:

(The following was tried for the official Linux repository)

Least information:

$ git config --get remote.origin.url


$ git ls-remote --get-url

More information:

$ git remote -v
origin (fetch)
origin (push)

Even more information:

$ git remote show origin
* remote origin
  Fetch URL:
  Push  URL:
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

I basically use:

git remote get-url origin

It works for git bash command console or cmd command console in Windows. That said it works with version 2.x of Git.

To get the answer:

git ls-remote --get-url [REMOTE]

This is better than reading the config; refer to the man page for git-ls-remote:


Expand the URL of the given remote repository taking into account any "url.<base>.insteadOf" config setting (See git-config(1)) and exit without talking to the remote.

As pointed out by @Jefromi, this option was added in v1.7.5 and not documented until v1.7.12.2.

Print arbitrarily named remote fetch URLs:

git remote -v | grep fetch | awk '{print $2}'

with git remote show origin you have to be in the projects directory. But if you want to determine the URLs from anywhere else you could use

cat <path2project>/.git/config | grep url

If you'll need this command often, you could define an alias in your .bashrc or .bash_profile with MacOS.

alias giturl='cat ./.git/config | grep url'

So you just need to call giturl in the git root folder in order to obtain simply its URL.


If you extend this alias like this

alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'

you get only the plain URL without the preceding




you get more possibilities in its usage:


On Mac you could call open $(giturl) to open the URL in the standard browser.

Or chrome $(giturl) to open it with the chrome browser on Linux.

I think you can find it under .git/config and remote["origin"] if you didn't manipulate that.

I can never remember all the parameters to git commands, so I just put an alias in the ~/.gitconfig that makes more sense to me so I can remember it and it results in less typing.

url = ls-remote --get-url

After reloading the terminal, you can then just type

> git url

Here are a few more of my frequently used ones:

cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags

To get the IP address/hostname of origin

For ssh:// repositories:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

For git:// repositories:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"