git remote, like git remote -v, that you may use occasionally.
The concept of a remote within Git is important and powers many of the other operations.
What does Git remote do?
git remote manages the set of remotes that you are tracking with your local repository.
Common git remote commands
git remote -v: List the current remotes associated with the local repositorygit remote add [name] [URL]: Add a remotegit remote remove [name]: Remove a remotegit remote rename [old-name] [new-name]: Rename a remote
What is origin?
If you try running git remote -v in your repositories, you’ll probably see something called origin. You may notice origin in many messages from Git.
origin is the human-friendly name for the URL that the remote repository is stored at. It’s like a key-value pair, and origin is the default.origin that points to the original repository.
What is upstream?
You may need or want to work with multiple remotes for one local repository. This can be common in open source when a contributor needs to create a fork of a repository to have permission to push changes to the remote.
In this case, it’s common to create and clone a fork. Then, the default remote would be origin, in reference to the fork. To make it easier to pull any changes to update the local copy of the fork from the original repository, many people add the original repository as a remote also.
Communicating with the remote
There are four commands within Git that prompt communication with the remote. Unless you are using one of these four commands, all of your work is only happening locally.git push
Upload commits to the remote
git clone
Clone a repository from the remote
git pull
Download and merge remote changes
git fetch
Download remote changes without merging
git push: Upload commits to the remotegit clone: Clone a repository from the remotegit pull: Download and merge remote changesgit fetch: Download remote changes without merging
Branches and the remote
The concept of branches can be confusing once it is combined with the concept of remotes. Git keeps track of the branches that you work on locally, as well as each of the branches in every remote associated with your local repo.Remote tracking branches
If you rungit branch --all in your repository, you will notice a long list of branches. The branches that (by default) appear in red are the remote tracking branches.
These branches are read-only copies of the branches on the remote. These update every time you run
git fetch or git pull.Local working branches
When you rungit branch --all, you will also see the local working branches. These can be linked with branches on the remote, or they could exist with no remote counterpart.
* indicates which branch you currently have checked out.
Examples
Adding a remote to an existing repository
If you created a repository withgit init and want to connect it to a remote:
Changing a remote URL
If you need to change the URL of a remote (for example, switching from HTTPS to SSH):Working with multiple remotes
You can have multiple remotes for a single repository:Related Commands
git clone [url]: Clone (download) a repository that already exists on GitHub, including all of the files, branches, and commitsgit status: Always a good idea, this command shows you what branch you’re on, what files are in the working or staging directory, and any other important informationgit push: Uploads all local branch commits to the remotegit pull: Updates your current local working branch with all new commits from the corresponding remote branch on GitHub.git pullis a combination ofgit fetchandgit merge
Next Steps
Git Push
Push changes to your remote repository
Git Pull
Pull changes from the remote
Git Clone
Clone a remote repository
Git Init
Initialize a new repository