Table of Contents

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:

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. 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:

refs/heads/<head>:refs/heads/<branch>
HEAD:refs/heads/<head>

Management

list

  • Git remote
git remote
origin

  • Git - Branch (List or delete (if used with -d) the remote-tracking branches)
git branch --remotes
* master

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:

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)

Git - Fetch (Remote Repository Sync)

push (Update remote)

Git - Push

Paths

Each remote has a directory under .git/refs/remotes/

Documentation / Reference