Git Concepts: Difference between revisions
(→Remote) |
|||
Line 32: | Line 32: | ||
The 'url' is the [[#URL|URL]] of the remote repository. 'fetch' is a [[#Refspec|refspec]] that specifies how a local [[# | The 'url' is the [[#URL|URL]] of the remote repository. 'fetch' is a [[#Refspec|refspec]] that specifies how a local [[#Ref|ref]] (which usually represents a branch) is mapped from the namespace of the source repository into the namespace of the local repository. The content of these branches will be transferred when [[git fetch]] is executed. Instead of specifying * that signifies all branches, individual branches can be listed on their own 'fetch' lines: | ||
... | |||
fetch = +refs/heads/dev:refs/remotes/origin/dev | |||
fetch = +refs/heads/stable:refs/remotes/origin/stable | |||
... | |||
These definitions can be manipulated with [git config#RemoteManipulation]. | These definitions can be manipulated with [git config#RemoteManipulation]. |
Revision as of 20:44, 11 December 2017
Internal
Names in Git
Reference
References available in a remote repository can be listed with git ls-remote.
Ref
Refspec
URL
Local Repository
The repository maintained on a local filesystem that is currently interacted with is called the local or current repository.
Remote Repository
A repository maintained on a remote host, but with which files are exchanged, is called a remote repository. The references available in a remote repository can be listed with git ls-remote.
Remote
A remote is named entity whose definition is maintained in .git/config that represents a reference to a remote repository. The remote can be seen as a short name for a long URL and other configuration information.
[remote "origin"] url = git@github.com:NovaOrdis/events-api.git fetch = +refs/heads/*:refs/remotes/origin/*
The 'url' is the URL of the remote repository. 'fetch' is a refspec that specifies how a local ref (which usually represents a branch) is mapped from the namespace of the source repository into the namespace of the local repository. The content of these branches will be transferred when git fetch is executed. Instead of specifying * that signifies all branches, individual branches can be listed on their own 'fetch' lines:
... fetch = +refs/heads/dev:refs/remotes/origin/dev fetch = +refs/heads/stable:refs/remotes/origin/stable ...
These definitions can be manipulated with [git config#RemoteManipulation].
The remote is used in assembling the full name for the [tracking branches|GitConcepts#TrackingBranch], also declared in .git/config.
Remotes can be created, removed and manipulated with [git remote].
!Origin
The "origin" is a special remote that refers to the repository the current repository was cloned from. The name "origin" is just a default value and it can be changed if so desired with --origin option of the [git clone] operation.