git diff non mostra abbastanza

Voglio vedere la differenza tra il ramo principale e il mio ramo di funzionalità. Ho molte richieste dal master al mio ramo delle funzionalità e voglio vedere le modifiche che verrebbero aggiunte se unissi la mia funzione al master.

Questa è la mia situazione:

-*--*--*-----* \ \ \ 1--*--*--*--2--* 

Il mio problema è che la funzione git diff master feature sembra mostrare solo il commit numero 2. Voglio vedere il diff che una richiesta di github pull mostrerebbe, che credo sia tutto il modo di commettere 1. Ho notato che git cherry mi mostra il commit voglio vedere la differenza per.

Grazie per qualsiasi consiglio.

La cosa importante da rendersi conto di git diff AB è che mostra sempre e solo la differenza tra gli stati dell’albero tra due punti esatti nel grafico di commit: non interessa la storia. Le .. e ... notazioni utilizzate per git diff hanno i seguenti significati:

Un'illustrazione dei diversi modi di specificare i commit per git diff

Quindi quando esegui la funzione git diff master feature che non ti mostra solo la modifica introdotta dal commit che hai contrassegnato come 2 – l’output dovrebbe mostrare le differenze esatte tra lo stato dell’albero commesso nel master e lo stato dell’albero commesso in feature . Se non ti mostra le modifiche precedenti sul tuo ramo delle funzionalità, forse hai risolto i conflitti delle precedenti fusioni dal master a favore della versione in master ?

Come dice cebewee , potrebbe essere che quello che vuoi sia git log -p master..feature , dato che git log si preoccupa della cronologia. Il significato di .. e ... per git log sono diversi in quanto selezionano un intervallo di commit:

Un'illustrazione dei diversi modi di specificare intervalli di commit per git log

Per inciso, è spesso detto che la fusione dal master in un ramo dell’argomento è la cosa sbagliata da fare – invece dovresti ridiscutere, o fondere il ramo dell’argomento in master dopo che è stato completato. Ciò consente di comprendere facilmente il significato del ramo dell’argomento. Il manutentore di git ha fatto un post sul blog (un po ‘difficile da capire) sulla filosofia della fusione che ne discute.

git diff master feature non mostra alcuna delle commits ‘ma la differenza testuale tra il master e la funzione commits. Sembra che tu voglia vedere tutti i commit dalla funzione, che non sono ancora nel master? In questo caso, prova git log master..feature o git log -p master..feature , se vuoi vedere anche le differenze.

Vedere la sezione SPECIFICARE I RANGE in man git-rev-parse per una spiegazione della syntax ‘a..b’.

Sono relativamente nuovo da git, ma se capisco correttamente la tua domanda. La tua domanda è radicata nel non comprendere correttamente i repository remoti e locali e come si relazionano tra loro. Ricordo che una volta capito, tutto divenne più facile 2X.

Pensi di essere in questa situazione sotto dove hai solo 2 rami:

  • featureBranch
  • masterBranch

Tuttavia, se fai un git branch -a sarai in grado di vedere tutti i tuoi rami, locali e remoti .

Quindi la tua situazione reale è:

  • featureBranch
  • masterBranch
  • remoteBranch (s)
  *---*  which is behind your local \ -*--*--*-----* which is ahead of your remote/origin \ \ \ 1--*--*--*--2--* 

Affinché tu possa vedere il diff simile a quello che vedi in Github Pull Request devi diff con il tuo ramo remoto .

 git diff  / 

Vedi confrontare il ramo git locale con il ramo remoto?