Come si può trovare il commit di unione precedente tra due rami?Come trovare il commit unione precedente
Mi piacerebbe vedere le modifiche nel mio ramo principale dall'ultima volta che ho fuso il ramo di rilascio nel ramo principale. Per vedere le modifiche nel ramo di rilascio dall'ultimo ramo, è facile come git diff ...release
Ma ovviamente git diff release...
non funziona perché include anche tutte le modifiche prima dell'ultima unione. Così Penso di aver bisogno l'id commettere degli ultimi merge per passarlo a git diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
sembra funzionare e può essere utilizzato con git diff $(...)
, ma sembra terribilmente complicato. C'è una soluzione più semplice?
Esempio
I
/\
A1 B1
\ |
| M
| |
A2 B2
Qui I
è l'iniziale commit. A[12]
vengono rilasciati il rilascio e B[12]
sono i commit principali. M
è il commit precedente. Nell'esempio le modifiche tra l'ultima fusione e master sono solo le modifiche introdotte da B2. git merge-base A2 B2
restituisce A
1. E git diff B2 A1
include le modifiche di B1
. Quindi la domanda è come trovare M nel caso generale più complesso in modo che si possa eseguire git diff M B2
senza dover trovare manualmente M
.
Questo non è il modo più efficiente, ma è possibile consultare 'git log --graph --oneline' per trovare il commit. – Shahbaz