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...Btươ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...branchcung 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...branchcho x, y, z, c, d, e.