Cách tốt nhất để nhận nhật ký cam kết trên một chi nhánh kể từ khi nhánh được phân nhánh từ nhánh hiện tại là gì? Giải pháp của tôi cho đến nay là:Cách nhận các thay đổi trên chi nhánh trong Git
git log $(git merge-base HEAD branch)..branch
Các 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 cho biết rằng r1...r2
được định nghĩa là r1 r2 --not $(git merge-base --all r1 r2)
.
Tại sao những sự khác biệt này lại khác nhau? Lưu ý rằng git diff HEAD...branch
mang lại cho tôi những khác biệt mà 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 hình ảnh, cho rằng điều này:
x---y---z---branch / ---a---b---c---d---e---HEAD
Tôi muốn để có được một bản ghi gồm các cam kết x, y, z.
git diff HEAD...branch
cho những cam kết- Tuy nhiên,
git log HEAD...branch
cho x, y, z, c, d, e.
Bạn đang sử dụng "git log" không chính xác cho mục đích của mình từ những gì tôi có thể thấy. Tôi đã thêm câu trả lời của tôi dưới đây. – PlagueHammer