2012-07-26 12 views
7

Sono un utente Mercurial e sono confuso dal comportamento dei rami remoti. Ho un ramo remoto origin/dev e voglio replicarlo su una branca locale dev. Quello che vorrei è che:Git - Tracciamento di rami remoti

  • ogni volta che git pull, modifiche al origin/dev sono fusi in dev
  • ogni volta che git push, modifiche alle dev sono fusi in origin/dev

così ho creato un ramo di monitoraggio con

git branch --track dev origin/dev 

quale, per il meglio di m Conoscenza, dovrebbe fare esattamente quello di cui ho bisogno.

Ancora, stavo lavorando su un ramo di funzionalità e ha emesso un git pull. Quando più tardi ho emanato git checkout dev ho ricevuto il messaggio sconcertante

Il vostro ramo è dietro 'origine/master_dev' da 2 commit, e posso essere veloce-inoltrato.

Quindi sembra che la mia filiale locale non è stata aggiornata dopo tutto. C'è un modo per avere il ramo aggiornato a quello remoto ogni volta che tiro e io non sono attualmente in quel ramo? In caso contrario, ho corretto che git merge (senza argomenti) sullo sviluppo del ramo è sufficiente per ripristinare la situazione?

+0

Correlati: [Come si crea un ramo Git esistente per tenere traccia di un ramo remoto?] (Http://stackoverflow.com/q/520650/456814). –

risposta

5

Il comando git pull recupera gli aggiornamenti da tutte le diramazioni remote (ad esempio, aggiorna tutti i rami di monitoraggio remoto). Ma unisce solo il ramo attuale. Questo è un comportamento predefinito di git pull quando non viene passato alcun argomento.

Come quando si era su un ramo di diff quando si git pull, si è appena aggiornato il ramo di monitoraggio remoto per dev. Ora git merge sarebbe sufficiente per aggiornare il ramo locale dev.

+3

Come nota a margine, [recuperare e unire, non tirare] (http://longair.net/blog/2009/04/16/git-fetch-and-merge/). – Shahbaz

+0

Ho appena provato semplicemente a unire e il risultato è 'fatale: nessun commit specificato e merge.defaultToUpstream non impostato. Anche se il ramo è stato creato come tracciamento – Andrea

+1

OK. Per farlo funzionare, puoi fare questo 'git unire nome_remoto/nome_resto'. Nel tuo caso, 'git unisci origine/master_dev'. –