2015-09-06 16 views
5

Ho installato un paio di pronti contro termine GitHub che utilizzano questa documentazione:L'origine ha qualche significato speciale?

echo "# foo" >> README.md 
git init 
git add README.md 
git commit -m "first commit" 
git remote add origin https://github.com/foo-1/foo.git 
git push -u origin master 

Il nome origin hanno alcun significato particolare?

Se così è puramente semantico?

risposta

6

Ora è solo il nome predefinito per il repository upstream clonato.
Ma ha usato per essere un ramo così in origine (fino a git 1.5.0 nei primi mesi del 2007):

La prima commettere l'introduzione di 'origin' risale 1cadb5a (July 2005, git 0.99.2).
è seguita da commit a692b96, che ha spiegato:

un ciclo di lavoro consigliato per un "singolo sviluppatore" che non ha un repository "pubblico" è un po 'diverso. Funziona così:

(1) Prepara il tuo repository di lavoro, per "git clone" il repository pubblico del "lead del progetto" (o un "manutentore del sottosistema", se lavori su un sottosistema).
L'URL utilizzato per la clonazione iniziale viene archiviato in .git/branches/origin.

(2) Fate il vostro lavoro lì. Fare commit.

(3) Eseguire "git fetch origin" dal repository pubblico del vostro upstream una volta ogni tanto. Questo fa solo la prima metà di "git pull" ma non si fonde.
Il capo dell'archivio pubblico è memorizzato in .git/refs/heads/origin.

Questo flusso di lavoro è stato ovviamente molto su misura per lo sviluppo distribuito del Linux kernel, in cui si aveva solo una pronti contro termine a monte.


Il .git/branches/origin non diventerà .git/remotes/origin prima commit 6687f8f (Aug. 2005, git v0.99.5), quando si può recuperare più di un pronti contro termine a monte.

Ora il recupero multi-test è completo, migriamo la configurazione di default per i nuovi repository creati con il comando "git clone".

L'originale $GIT_DIR/branches non è ancora deprecato, ma crea anche la directory dei telecomandi per impostazione predefinita dai modelli.


Poi commit e125c1a (Nov. 2005, v0.99.9c) aggiunto:

Il repository di recente clonato di default aveva .git/remotes/origin istituito per monitorare il telecomando master-origin, ma ha dimenticato di creare il ramo origin noi stessi.
Inoltre, ha presupposto che il telecomando HEAD punti a "master", che potrebbe non essere sempre vero.


ha cominciato a evolversi per 'origine' come un pronti contro termine a monte nella commit dfeff66 (March 2006, git 1.3.0), dove:

responsabili di filiali a monte vengono copiati in .git/refs/remotes/ invece di .git/refs/heads/ e .git/remotes/origin file viene impostato fino a rifletti anche questo.
Richiede di avere l'aggiornamento fetch/pull per capire .git/refs/remotes di Eric Wong per aggiornare ulteriormente il repository clonato in questo modo.

Questo è dettagliato in commit c72112e.


Inadempiente a 'origine', quando il recupero è stato introdotto nel commit 5e27e27 (July 2006, git 1.4.2).


Il telecomando origin viene memorizzato in ./git/config in commit 255cae8 (Nov. 2006, git 1.5.0)

Per esempio quello che prima era .git/remotes/origin:

URL: proto://host/path 
    Pull: refs/heads/master:refs/heads/origin 

è ora aggiunto a .git/config come:

012.351.
[remote "origin"] 
    url = proto://host/path 
    fetch = refs/heads/master:refs/heads/origin 

git pull default origin con commit 955289b (Dec. 2006, git 1.5.0):

senza alcuna indicazione nel file .git/config, git-pull eseguirà "git-pull origin"; che a sua volta si imposta automaticamente dalla prima definizione "pull" per il telecomando, "origin".

Il glossary is then updated:

origin:

Il predefinito repository upstream. La maggior parte dei progetti ha almeno un progetto upstream che tracciano. Per impostazione predefinita, 'origin' viene utilizzato a tale scopo.
I nuovi aggiornamenti a monte verranno scaricati nei rami di monitoraggio remoto denominati origin/name-of-upstream-branch, che è possibile visualizzare utilizzando "git branch -r".

Problemi correlati