About
A remote in Git is a remote repository (ie a remote git server).
Git remote manage the set of repositories (“remotes”) whose branches you track.
They are also called tracked repositories in reference to tracking branch.
See also:
Provider
Remote repository definition
The name of one of the following can be used instead of a URL as repository argument:
- a remote in the Git configuration file: $GIT_DIR/config,
- a file in the $GIT_DIR/remotes directory, or
- a file in the $GIT_DIR/branches directory.
All of these also allow you to omit the refspec from the command line because they each contain a refspec which git will use by default.
Named remote in configuration file
Name of a remote configured using:
- git remote
- or git config (The remote configuration is achieved using the remote.origin.url and remote.origin.fetch configuration variables).
- or a manual edit to the $GIT_DIR/config file.
The URL of this remote will be used to access the repository.
The refspec of this remote will be used by default when you do not provide a refspec on the command line. The entry in the config file would appear like this:
[remote "<name>"]
url = <url>
pushurl = <pushurl>
push = <refspec>
fetch = <refspec>
where:
- The <pushurl> is used for pushes only. It is optional and defaults to <url>.
Named file in $GIT_DIR/remotes
You can choose to provide the name of a file in $GIT_DIR/remotes. The URL in this file will be used to access the repository.
The refspec in this file will be used as default when you do not provide a refspec on the command line.
This file should have the following format:
URL: one of the above URL format
Push: <refspec>
Pull: <refspec>
where:
- Push: lines are used by git push
Multiple Push: and Pull: lines may be specified for additional branch mappings.
Named file in $GIT_DIR/branches
<branch> is the name of a file in $GIT_DIR/branches. What is a Git Branch ?
The URL in this file will be used to access the repository. This file should have the following format:
<url>#<head>
where:
- <url> is required;
- #<head> is optional (defaults to master)
Usage:
- git fetch uses:
refs/heads/<head>:refs/heads/<branch>
- git push uses:
HEAD:refs/heads/<head>
Management
list
- Git remote
git remote
origin
- What is a Git Branch ? (List or delete (if used with -d) the remote-tracking branches)
git branch --remotes
* master
- or with Git - Config
git config --get-regex remote
remote.aliasRemote.url=https://github.com/gerardnico/dokuwiki-plugin-codeplus.git
remote.aliasRemote.fetch=+refs/heads/*:refs/remotes/origin/*
add
Add a remote.
Example:
- origin in case of a local copy. The most known and used.
git remote add aliasRemote https://github.com/userName/repositoryName.git
verification
git remote -v
origin https://github.com/gerardnico/myRepo.git (fetch)
origin https://github.com/gerardnico/myRepo.git (push)
relocate (Update URL)
git remote set-url origin http://newUrl.git
fetch (Update local)
push (Update remote)
Paths
Each remote has a directory under .git/refs/remotes/