2013-10-29 7 views
8

Sto per unire una grande modifica da un ramo remoto (non-origine), e più specificamente da un determinato tag.Git diff con tag remoto

Ci sono due telecomandi quindi:

  1. origin
  2. proposal

Sul proposal remota, un nome ramo idea esiste, con un tag tagged_idea.

L'idea è che voglio rivedere le modifiche in entrata tra tagged_idea e il mio attuale HEAD. Come posso raggiungere questo obiettivo?

Ho provato qualcosa come git diff .../proposal/tags/tagged_idea ma non ha funzionato bene. Qualche idea?

In altri termini, quello che mi piacerebbe vedere è il risultato dell'unione, prima ancora di farlo nella mia filiale. Proprio come se facessi il pull git pull proposal tags/tagged_idea ma senza apportare effettivamente le modifiche.

+0

dove vuoi vedere le modifiche se nulla deve essere cambiato? almeno il mio flusso di lavoro di solito consente di fare qualsiasi tipo di fusione/modifica/... nella mia copia locale, che è abbastanza facile da annullare se non mi piace. una volta che mi piace, viene spinto al telecomando corretto. –

+0

Mi piacerebbe qualcosa di equivalente all'output di un diff. – aspyct

+0

quindi cosa intendi per "non ha funzionato bene"? –

risposta

10

La maggior parte dei comandi git funziona solo localmente, esp. cose come git diff e git merge.

repository locale può avere più telecomandi, ma al fine di lavorare su questi, è necessario prima sincronizzare il repository locale con i telecomandi:

git fetch --all 

Mentre questo scaricherà tutti i gruppi di modifiche, non applicherà li al tuo attuale ramo, a meno che il ramo attuale sia tracking uno dei telecomandi.

Dopo aver scaricato i changeset remoti e tag, si può semplicemente eseguire qualcosa di simile:

git diff tagged_idea 

... e vedere la diff tra il vostro attuale HEAD e un tag tagged_idea, nel luogo in cui risiede.

+2

Se si utilizza 'git fetch' invece di 'git pull', riceverai comunque tutti i nuovi commit, ma git non tenterà di unire (o rebase, a seconda delle impostazioni di' pull.rebase' e ​​di altre git config) nessuno di quei cambiamenti anche se tu Sei su un ramo di "monitoraggio". (C'è un piccolo avvertimento se normalmente si tiene traccia di un ramo remoto forzato e di autobase con il rebase "intelligente" che git pull --rebase può fare, ma questo è un * molto * flusso di lavoro insolito.) – torek

+0

@ buon punto; ho aggiornato la mia risposta di conseguenza –

1

Io uso git ls-remote --tags proposal |grep tagged_idea per ottenere l'hash di revisione, quindi fare git diff con l'hash.