2013-05-30 9 views
11

Se sono su un ramo locale che è non tracciamento qualsiasi ramo a distanza e mi date il comandodistanza predefinita per git fetch

git fetch 

Premesso che ho più di un telecomando definito $GIT_DIR/config, da cui è remoto vai a fare?

Ho provato a scoprire dallo man page, ma questo punto non è chiaro per me.

In aggiunta: come posso modificare questo telecomando predefinito senza effettuare il tracciamento della diramazione locale?

risposta

2

Recupera il telecomando dell'origine. Questo è il primo telecomando su cui è stato eseguito il comando GIT clone.

+1

Potrebbe non aver mai eseguito un 'git clone' sul repository, ma aggiunto i telecomandi (chiamati 'origine' o altro) dopo il fatto. – mwfearnley

15

Se si dispone di più archivi remoti e non si specifica alcun nome di repository remoto, per impostazione predefinita verrà utilizzato origin. Se non c'è un repository remoto denominato origine, allora sarà errore fuori dicendo

fatal: No remote repository specified. Please, specify either a URL or a 
remote name from which new revisions should be fetched. 

Inoltre: Come posso cambiare questa impostazione predefinita a distanza senza fare il tracking filiale locale?

È possibile rinominare il nome del repository in "origine" per renderlo predefinito.

Attento: questo non funziona se il ramo corrente ha già un upstream specificato su un altro telecomando. Da git help fetch: "Se non viene specificato alcun telecomando, per impostazione predefinita verrà utilizzato il telecomando di origine, a meno che non sia configurato un ramo a monte per il ramo corrente." In questo caso, è possibile modificare i rami upstream per utilizzare origin modificando i campi remote per rami configurati in .git/config.

+2

Non c'è alternativa alla modifica del nome del telecomando da cui proviene l'origine? –

+5

È un po 'inflessibile pensare che "origine" sia il telecomando predefinito. Io rinomina sempre i miei telecomandi per essere più significativi come "github", "interno" ecc. E sì, quando il telecomando "origine" non esiste, git urlerà "fatale: nessun repository remoto specificato". – Devy

+1

@KlasMellbourn: puoi impostare il telecomando affinché i tuoi rami di tracciamento usino un telecomando diverso da 'origine', e quel telecomando verrà usato di default quando esegui' git fetch' con uno di questi rami estratto. – ntc2

2

Nella cartella del progetto, quando si inizializza git nel primo passaggio, viene creata la cartella .git.

Cerca in questa cartella un file di nome config, contiene tutte le informazioni sul ramo. l'origine è usata come predefinita.

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:project.git 

Quindi il codice viene recuperato dall'URL elencato qui.