2012-03-02 21 views
392

Quando ho eseguito:Che cos'è "origine" in Git?

git push origin branchname 

che cosa è esattamente origin e perché è necessario digitare prima il nome del ramo?

+41

"origine" è il nome del repository remoto in cui si desidera pubblicare si commette. Per convenzione, il repository remoto predefinito è chiamato "origine", ma è possibile lavorare con diversi telecomandi (con nomi diversi) allo stesso tempo. Maggiori informazioni qui (per esempio): http://gitref.org/remotes/ –

+1

Nota anche che l'origine è un repository "upstream": vedi http://stackoverflow.com/questions/2739376/definition-of-downstream-and -upstream/2749166 # 2749166 – VonC

+1

Possibile duplicato di [Qual è il significato di 'origine' in 'git push origin master'] (https://stackoverflow.com/questions/5270760/whats-the-meaning-of-origin-in -git-push-origin-master) – nawfal

risposta

386

origin è un aliassul sistema per un particolare repository remoto. In realtà non è una proprietà di quel repository.

Facendo

git push origin branchname 

che stai dicendo a spingere al repository origin. Non è necessario nominare il repository remoto origin: infatti lo stesso repository potrebbe avere un alias diverso per un altro sviluppatore.

I telecomandi sono semplicemente uno alias che memorizza l'URL dei repository. Si può vedere ciò che appartiene a ogni URL remoto utilizzando

git remote -v 

Nel comando push, è possibile utilizzare telecomandi o si può semplicemente utilizzare un URL direttamente. Un esempio che utilizza l'URL:

git push [email protected]:git/git.git master 
+34

Per chiarimenti (dopo aver esaminato alcune delle altre risposte); il nome 'origin' è un alias * sul tuo sistema * per un particolare repository che esiste altrove. In realtà non è una proprietà di quel repository. Lo stesso repository potrebbe essere aliasato in 'origin' da uno sviluppatore e' flub' da un altro. –

+0

Un singolo telecomando può essere un alias per più altri telecomandi? Cosa succede se volevo un telecomando per spingere su più altri telecomandi? Ad esempio, push su un repository primario e una push su un repository di backup? Sarebbe una cosa ragionevole da volere in alcune situazioni? EDIT: ci sono [diverse soluzioni qui] (https://stackoverflow.com/questions/849308/pull-push-from-multiple-remote-locations). – Yankee

58

Git ha il concetto di "telecomandi", che sono semplicemente gli URL ad altre copie del vostro repository. Quando cloni un altro repository, Git crea automaticamente un remoto chiamato "origine" e punta ad esso.

È possibile visualizzare ulteriori informazioni sul telecomando digitando git remote show origin.

+0

I comandi git sono molto confusionari per i principianti. Immagino che abbia a che fare con la storia di questo sistema di controllo della versione. Quindi, domanda: invece di "git remote show origin", perché non semplicemente "git show origin"? Ci deve essere una ragione, che cos'è? Grazie. – Stack0verflow

+3

@ Stack0verflow: probabilmente è meglio chiedere una nuova domanda in modo che le persone possano fare la ricerca se siete curiosi. 'git show' è già un altro comando che mostra un commit e tecnicamente nulla ti impedisce di avere un ramo chiamato 'origine' oltre ad avere un'origine chiamata remota ... –

30

origin è il valore predefinito alias nell'URL del repository remoto.

92

origin è non il nome del repository remoto. È piuttosto un alias locale impostato come chiave al posto dell'URL del repository remoto.

Evita all'utente di digitare l'intero URL remoto quando viene richiesto un push.

Questo nome è impostato per impostazione predefinita e per convenzione da Git quando si clona da un telecomando per la prima volta.

Questo nome alias non è difficile codificato e potrebbe essere modificato usando seguente prompt dei comandi:

git remote rename origin mynewalias 

Date un'occhiata a http://git-scm.com/docs/git-remote per ulteriori chiarimenti.

16

Sono stato anche confuso da questo, e di seguito è quello che ho imparato.

Quando si duplica un repository, per esempio da GitHub:

  • origin è l'alias per l'URL da cui è clonato il repository.Nota che puoi cambiare questo alias.

  • C'è una filiale master nel repository remoto (con alias di origin). C'è anche un altro ramo master creato localmente.

Ulteriori informazioni si possono trovare da questa domanda SO: Git branching: master vs. origin/master vs. remotes/origin/master

9

Quando si duplica un repository con git clone, crea automaticamente una connessione remota denominata origin che punta al repository clonato. Ciò è utile per gli sviluppatori che creano una copia locale di un repository centrale poiché fornisce un modo semplice per eseguire modifiche a monte o pubblicare commit locali. Questo comportamento è anche il motivo per cui la maggior parte dei progetti basati su Git chiamano l'origine del repository centrale.

8

Semplice! "Origine" è proprio quello che soprannominato il repository remoto quando è stato eseguito un comando come questo:

git remote add origin [email protected]:USERNAME/REPOSITORY-NAME.git 

Da allora in poi Git sa che "origine" indica che repository specifico (in questo caso un repository GitHub). Avresti potuto chiamarlo "github" o "repo" o qualunque cosa tu volessi.

Problemi correlati