Cách tốt nhất để có được một bản ghi các cam kết trên một chi nhánh kể từ thời điểm nó được phân nhánh từ chi nhánh hiện tại là gì? Giải pháp của tôi cho đến nay là:
git log $(git merge-base HEAD branch)..branch
Tài liệu cho git-diff chỉ ra rằng git diff A...B
tương đương với git diff $(git-merge-base A B) B
. Mặt khác, tài liệu cho git-rev-parse chỉ ra rằng nó r1...r2
được định nghĩa là r1 r2 --not $(git merge-base --all r1 r2)
.
Tại sao những điều này khác nhau? Lưu ý rằng git diff HEAD...branch
cung cấp cho tôi các khác biệt tôi muốn, nhưng lệnh git log tương ứng cung cấp cho tôi nhiều hơn những gì tôi muốn.
Trong ảnh, giả sử điều này:
x --- y --- z --- chi nhánh / --- a --- b --- c --- d --- e --- TRỤ
Tôi muốn nhận một bản ghi chứa các xác nhận x, y, z.
git diff HEAD...branch
đưa ra những cam kết- tuy nhiên,
git log HEAD...branch
cho x, y, z, c, d, e.