2013-07-02 10 views
7

Stiamo seguendo questo modello di usare git: http://nvie.com/posts/a-successful-git-branching-model/git fetch spettacoli nulla sulla console

Sto cercando di imparare ad usare git fetch e git merge sulla fusione specifica invece di tirare. Per la mia domanda, ciò che ho fatto è stato apportare modifiche a un ramo e ha spinto tali modifiche al ramo. Vedo quei cambiamenti su GitHub. Poi passo al master per andare a prendere quei cambiamenti. So I

git checkout master 
git fetch // terminal shows nothing 
git fetch origin // terminal shows nothing 

Sto utilizzando i comandi correttamente per il recupero? Non vedo nulla sulla console. Ma poi quando uso uno strumento come SourceTree, e recupero, aggiorna il loro albero e posso vedere le modifiche.

Supponendo che questo passo successivo funzioni, e vedo che sono state apportate diverse modifiche, faccio semplicemente un git merge <hash of the last commit or commit I want to merge in>? Grazie!

+3

Se tutto è aggiornato, quindi 'git fetch' sarà in uscita nulla. – dyng

+0

@dyng Non penso che il master sia aggiornato da quando ho costruito, non ho le mie ultime funzionalità che avevo su quell'ultimo ramo. Ha senso? – Crystal

+0

Per impostazione predefinita, se è stato impostato un upstream per 'master',' git fetch origin' recupera il codice in 'origin/master' (* non *' master'), intendo 'origine/master' fino a data in cui Dico aggiornato. Puoi controllarlo con 'git diff master origin/master'. In caso contrario, forse non hai impostato l'upstream. Il caricamento di – dyng

risposta

3

Per quanto riguarda l'ultima parte, come indicato nel "Fun with FETCH_HEAD", si può fare:

$ git fetch git://repo.or.cz/stranger.git for-junio 
$ git log -p ..FETCH_HEAD 
$ git merge FETCH_HEAD 

Perché "pull" è "fetch + merge", stiamo scomponendo esplicitamente l'operazione in due fasi.

"fetch" lascia le informazioni sul ramo si trova sul lato opposto in FETCH_HEAD, che è possibile utilizzare come denominare l'oggetto commettere seduto sulla punta del ramo.
"git log -p ..FETCH_HEAD" (notare i doppi punti) consente di visualizzare i commit che ha ma non nel ramo con le loro modifiche in forma patch per ispezionare ciò che ha fatto era ragionevole.
Se si è soddisfatti, è possibile utilizzare FETCH_HEAD per unire il commit nel ramo.

(Si veda ad esempio this answer)

come dettagliato nella "How Do I 'git fetch' and 'git merge' from a Remote Tracking Branch (like 'git pull')", non c'è bisogno di usare FETCH_HEAD se si dispone di un upstream branch definiti:

git fetch origin 
git merge origin/an-other-branch 

git fetch origin an-other-branch memorizza il suggerimento scaricato in FETCH_HEAD, ma non origin/an-other-branch (ovvero il solito "ramo di monitoraggio remoto").
Quindi, uno potrebbe fare git fetch origin an-other-branch && git merge FETCH_HEAD.

Per la prima parte, assicurarsi di your branch has an upstream branch set sul repository upstream remoto.

7

git fetch o git fetch origin vanno bene, ma se non c'è nulla da fare, non viene visualizzato nulla.

È possibile utilizzare git fetch -v di essere più prolisso e visualizzare informazioni

+0

Risposta semplice. –