About remote repositories
GitHub's collaborative approach to development depends on publishing commits from your local repository to GitHub for other people to view, fetch, and update.
In this article
About remote repositories
A remote URL is Git's fancy way of saying "the place where your code is stored." That URL could be your repository on GitHub, or another user's fork, or even on a completely different server.
You can only push to two types of URL addresses:
- An HTTPS URL like
https://github.com/user/repo.git
- An SSH URL, like
git@github.com:user/repo.git
Git associates a remote URL with a name, and your default remote is usually calledorigin
.
Creating remote repositories
You can use thegit remote add
command to match a remote URL with a name.For example, you'd type the following in the command line:
git remote add origin <REMOTE_URL>
This associates the nameorigin
with theREMOTE_URL
.
You can use the commandgit remote set-url
tochange a remote's URL.
Choosing a URL for your remote repository
There are several ways to clone repositories available on GitHub.
When you view a repository while signed in to your account, the URLs you can use to clone the project onto your computer are available below the repository details.
For information on setting or changing your remote URL, seeManaging remote repositories.
Cloning with HTTPS URLs
Thehttps://
clone URLs are available on all repositories, regardless of visibility.https://
clone URLs work even if you are behind a firewall or proxy.
When yougit clone
,git fetch
,git pull
, orgit push
to a private remote repository using HTTPS URLs on the command line, Git will ask for your GitHub username and password. When Git prompts you for your password, enter your personal access token. Alternatively, you can use a credential helper likeGit Credential Manager. Password-based authentication for Git has been removed in favor of more secure authentication methods. For more information, seeManaging your personal access tokens.
If you are accessing an organization that uses SAML SSO and you are using a personal access token (classic), you must also authorize your personal access token to access the organization before you authenticate. For more information, seeAbout authentication with single sign-on andAuthorizing a personal access token for use with single sign-on.
Tip
- You can use a credential helper so Git will remember your GitHub credentials every time it talks to GitHub. For more information, seeCaching your GitHub credentials in Git.
- To clone a repository without authenticating to GitHub on the command line, you can use GitHub Desktop to clone instead. For more information, seeCloning a repository from GitHub to GitHub Desktop.
If you'd rather use SSH but cannot connect over port 22, you might be able to use SSH over the HTTPS port. For more information, seeUsing SSH over the HTTPS port.
Cloning with SSH URLs
SSH URLs provide access to a Git repository via SSH, a secure protocol. To use these URLs, you must generate an SSH keypair on your computer and add thepublic key to your account on GitHub. For more information, seeConnecting to GitHub with SSH.
When yougit clone
,git fetch
,git pull
, orgit push
to a remote repository using SSH URLs, you'll be prompted for a password and must provide your SSH key passphrase. For more information, seeWorking with SSH key passphrases.
If you are accessing an organization that uses SAML single sign-on (SSO), you must authorize your SSH key to access the organization before you authenticate. For more information, seeAbout authentication with single sign-on andAuthorizing an SSH key for use with single sign-on" in the GitHub Enterprise Cloud documentation.
Tip
You can use an SSH URL to clone a repository to your computer, or as a secure way of deploying your code to production servers. You can also use SSH agent forwarding with your deploy script to avoid managing keys on the server. For more information, seeUsing SSH agent forwarding.
Cloning with GitHub CLI
You can also install GitHub CLI to use GitHub workflows in your terminal. For more information, seeAbout GitHub CLI.