Có một cách tổng quát để đi về vấn đề này mà không dựa vào --first-parent
mà sẽ rất hữu ích trong những tình huống nhất định .. sử dụng các bộ lọc loại trừ chi nhánh
git log origin/topic ^origin/master
này sẽ cung cấp cho bạn một bản ghi của origin/topic
với tất cả các Đã xóa các cam kết của origin/master
.
bạn cũng có thể thêm trong --no-merges
sẽ ẩn các cam kết hợp nhất mà bạn có thể hoặc không muốn.
Một mẹo hữu ích khác là sử dụng shortlog
thay vì log
, nó sẽ cung cấp cho bạn thêm tóm tắt ngắn gọn có thể hữu ích cho ghi chú phát hành hoặc liên lạc về những gì trong nhánh.
Cập nhật
Sau khi đọc này, bạn thực sự muốn gần nghịch đảo của những gì tôi đăng tải; tuy nhiên nó sẽ không bao gồm tất cả mọi thứ trên master và foo (git log origin/master ^origin/foo
). Tuy nhiên, bạn cũng có thể nhận được những gì bạn yêu cầu (ẩn tất cả các cam kết là một phần của việc hợp nhất) với git log origin/master --no-merges
Vì vậy, làm thế nào để biết được 'D' và' Z' là một phần của chi nhánh đã hợp nhất? – Romain
Khi hợp nhất từ chủ, các cam kết chính trước đó là cha mẹ đầu tiên trong hợp nhất. 'git log' chỉ cho phép hiển thị các commit đó với' --first-parent', vì vậy bạn có thể tìm được đúng các quyền – CharlesB
bản sao của [Làm cách nào để chạy Git Log chỉ xem các thay đổi cho một nhánh cụ thể?] (http://stackoverflow.com/questions/4649356/how-do-i-run-git-log-to-see-changes-only-for-a-specific-branch) –