2015-05-10 10 views
5

Stavo cercando di trasferire le modifiche da monte alla mia forcella. Ho provato git fetch https://github.com/someuser/someproject, ma si è ostinatamente rifiutato di fare qualsiasi cosa. E 'appena detto qualcosa di totalmente criptico e non ha fatto nulla, e cioè:Qual è la differenza tra "git fetch <url>" e "git add remote upstream <url>" seguito da "git fetch upstream"?

From https://github.com/someuser/someproject 
* branch   HEAD  -> FETCH_HEAD 

Ma il momento ho aggiunto l'URL, un nome a distanza, le cose sono cambiate:

> git remote add upstream https://github.com/someuser/someproject.git 
> git fetch upstream 
remote: Counting objects: 340, done. 
remote: Compressing objects: 100% (268/268), done. 
remote: Total 340 (delta 145), reused 18 (delta 16), pack-reused 44 
... etc ... 

Allora, qual è la differenza? Perché non ha fatto nulla quando ho specificato un telecomando senza aggiungerlo prima? E cosa mi stava dicendo esattamente quando ho provato a recuperare dall'URL?

+1

Sei sicuro che non ha funzionato? Hai provato a fare il checkout o unire un riferimento magico chiamato 'FETCH_HEAD'? –

+0

@RetoAebersold Sì. Provato di nuovo: pulire il clone, poi il fetch (istantaneo), poi ho provato a 'git checkout ' che è lì in upstream - "non corrisponde". Poi ho fatto il "remote add", "fetch upstream" (questa volta richiede un po '), quindi 'checkout ' di nuovo - ha ottenuto una testata staccata come previsto. –

risposta

1

Non sono un esperto in questo, quindi ho usato Google e the man pages per aiutare a ricostruire cosa sta succedendo.

This question dovrebbe demistificare l'aspetto FETCH_HEAD delle cose. Non è davvero possibile per me dire quale sia lo stato del tuo repository dal leggere la tua domanda, ma presumibilmente i tuoi punti FETCH_HEAD all'ultimo commit nello HEAD nel repository remoto, qualunque cosa possa accadere. Probabilmente hai già commesso tali errori sul tuo sistema, e quindi tutto ciò che ha fatto è stato aggiornare FETCH_HEAD. Probabilmente vorresti fornire una filiale.

Quando si aggiunge un telecomando, si ottiene funzionalità aggiuntive, come un ramo predefinito e rami di localizzazione remota. Credo che il tuo secondo comando agisca in modo diverso perché git utilizza una logica implicita per fare ciò che è in genere desiderato. Il recupero direttamente da un URL è più di una mossa avanzata e per questo motivo si ottengono meno ipotesi.

Morale della trama, se vuoi che le cose funzionino, basta aggiungere un telecomando. Altrimenti, preparati a cimentarti con altri dettagli sottostanti.