Qual è il modo migliore per ottenere un registro dei commit su un ramo dal momento in cui è stato ramificato dal ramo corrente? La mia soluzione finora è:
git log $(git merge-base HEAD branch)..branch
La documentazione per git-diff indica che git diff A...B
è equivalente a git diff $(git-merge-base A B) B
. D'altra parte, la documentazione per git-rev-parse indica che r1...r2
è definito come r1 r2 --not $(git merge-base --all r1 r2)
.
Perché sono diversi? Nota che git diff HEAD...branch
mi dà le differenze che voglio, ma il comando git log corrispondente mi dà più di quello che voglio.
Nelle immagini, supponiamo che:
x --- --- y z --- ramo / --- --- un b --- --- c d --- e --- TESTA
Vorrei ottenere un registro contenente commit x, y, z.
git diff HEAD...branch
dà questi impegni- tuttavia,
git log HEAD...branch
dà x, y, z, c, d, e.