In order to collaborate with other users on a Git project, you should have an understanding on working with remotes in Git. Remote repositories are repositories that are hosted externally, most likely on the Internet. There are popular websites that provide this hosting service, such as Github and Bitbucket.
Essentially, the idea is that so you can push up code changes from your local machine to the remote, then other users can pull down and view those changes.
Using Git commands, remotes can be managed for a specific repository. To view the current remotes configured, run the git remote
command.
If you haven’t set up a remote within a repository and run the command, nothing will happen. However if you have set up a remote, then you might see something like the following.
$ git remote
origin
origin
is the common name given to the remote repository. Websites such as Github and Bitbucket will provide instructions on how to set up a Git repository.
Usually, they will provide you with two commands: the first to initialise an empty Git repository in a given directory, and the second to add a remote.
$ git init
$ git remote add origin https://git@bitbucket.org//.git
You do not have to name the remote origin
, although it is common to do so when working with only one remote. For example, to name the remote some_remote_name
:
$ git remote add some_remote_name https://git@bitbucket.org//.git
You can also specify -v
to show the URLs that Git has stored for the remote name to be used when reading and writing to that remote.
$ git remote -v
some_remote_name https://git@bitbucket.org//.git (fetch)
some_remote_name https://git@bitbucket.org//.git (push)
When a remote has been added, you can push your changes up to it by passing in the remote name and the branch name to git push
.
$ git push some_remote_name master
A Git repository can have many remotes, if you need to push changes to multiple locations. Simply use the git remote add
command again specifying the remote shortname and URL.
$ git remote add github https://github.com/Company_Name/repository_name.git
This will allow you to push changes either to the some_remote_name
or the github
remote.
$ git push -u some_remote_name master
$ git push -u github master
Renaming a remote is possible. Simply run git remote rename
passing in the current remote name as the first argument, followed by the name you would like the remote to be changed to as the second.
$ git remote rename some_remote_name another_remote_name
Should you wish to remove a remote, you can either use git remote remove
or git remote rm
passing in the shortname of the remote.
$ git remote rm another_remote_name