2016-02-24 18 views
5

In quali circostanze il comando git pull origin master genera uno stato di copia di lavoro diverso da git checkout master ->git pull ->git checkout feat-a ->git merge master?Che cosa potrebbe causare che `git pull` non riesce a vedere le modifiche remote?

La lunga storia.

Ho un ramo di funzionalità, chiamiamolo feat-a. Sono l'unico sviluppatore che lavora su questo ramo. Il ramo è stato creato dal ramo master. Entrambe le filiali hanno origini remote, origin/feat-a e origin/master. Niente di speciale, il tuo tipico arrangiamento di repository git.

Oggi volevo aggiornare il mio ramo di funzionalità da remoto master. Da precedenti comunicazioni con altri sviluppatori, sapevo che ci sarebbero state modifiche contrastanti quando unire il numero di telefono remoto master nel mio ramo delle funzionalità.

Sto utilizzando SourceTree. Quindi, con il ramo feat-a estratto, ho aperto il menu di scelta rapida sull'origine/ramo principale e ho scelto Pull origin/master into current branch. Sono rimasto scioccato nel vedere Git che ha riferito che la mia filiale è già aggiornata. Sapevo che non è giusto, ci devono essere cambiamenti sul ramo remoto master. Ho ripetuto il comando alcune volte. Ho sempre ricevuto lo stesso messaggio aggiornato.

Per essere sicuro al 100%, l'ho fatto "alla grande". Ho controllato il ramo master, ho cliccato sul pulsante Pull. Il ramo è stato aggiornato con gli ultimi commit. Poi ho controllato il ramo feat-a e poi ho tirato il menu contestuale sul ramo principale e ho scelto Merge master into current branch. Ecco! Ecco il conflitto di fusione che mi aspettavo di ottenere!

Questo mi ha lasciato perplesso. Avevo pensato che eseguire pull da origin/master nel mio attuale ramo equivale a fare il check-out master, estrarre, controllare l'altro ramo e quindi unire master nel ramo corrente (con l'eccezione che il trasferimento da remoto master in un altro ramo non aggiorna il mio locale master, ma questo non dovrebbe influire sul problema).

In sostanza, per qualche ragione pull comando dalla origin/master in feat-a cercava di convincermi che non ci sono cambiamenti sulla origin/master, e solo il modo lungo con rami di commutazione e la fusione manuale funzionato come previsto.

Non sono sicuro che SourceTree stia facendo qualcosa di speciale che potrebbe influire sul problema.

+0

Anche io ho affrontato questo problema ieri mentre estraevo il codice dal "ramo master" di Github nel mio "heroku branch" nella macchina locale, ma diceva che il tuo ramo era aggiornato, e quindi ho seguito i passaggi che hai menzionato sopra. Ho pensato che doveva essere un bug. – sahil

+0

Verifica che il monitoraggio sia ciò che pensi. 'git branch -avv' ti mostrerà quali rami remoti sono tracciati per ogni ramo locale. Potresti scoprire che in qualche modo 'master' sta inseguendo qualcosa di diverso da' origin/master'. –

risposta

1

Si dice di utilizzare Sourcetree, quindi suppongo che in realtà non si digiti git pull origin master sulla riga di comando. La mia ipotesi è che sia qualcosa di confuso nel messaggio della GUI, o un bug in Sourcetree.

Preferisco chiedere agli sviluppatori di Sourcetree.

+0

Sì, potrebbe essere il caso. Ho riscontrato il problema oggi dopo aver aggiornato SourceTree. Non ho avuto problemi simili in precedenza, quindi potrebbe trattarsi di qualche nuovo bug in SourceTree. Proverò a riprodurlo oggi. – JustAMartin

+0

Avevi ragione. Io e alcuni dei miei colleghi siamo diventati vittime di questo bug: https://jira.atlassian.com/browse/SRCTREEWIN-4329 Immagino che questo sia il prezzo per fidarsi troppo degli strumenti della GUI. – JustAMartin

Problemi correlati