Đối với những người vẫn đang tìm kiếm một câu trả lời đơn giản, hãy kiểm tra git cherry . Nó so sánh các khác biệt thực tế thay vì băm cam kết. Điều đó có nghĩa là nó chứa các cam kết đã được chọn hoặc nổi loạn.
Đầu tiên kiểm tra chi nhánh bạn muốn xóa:
git checkout [branch-to-delete]
sau đó sử dụng git cherry để so sánh nó với nhánh phát triển chính của bạn:
git cherry -v master
Ví dụ đầu ra:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message
- 85867e38712de930864c5edb7856342e1358b2a0 Yet another message
Lưu ý: -v
Cờ là bao gồm thông điệp cam kết cùng với hàm băm SHA.
Các dòng có '+' ở phía trước nằm trong nhánh cần xóa, nhưng không phải là nhánh chính. Những người có dấu '-' ở phía trước có một cam kết tương đương trong tổng thể.
Đối với JUST các cam kết không nằm trong tổng thể, kết hợp cherry chọn với grep:
git cherry -v master | grep "^\+"
Ví dụ đầu ra:
+ 8a14709d08c99c36e907e47f9c4dacebeff46ecb Commit message
+ b30ccc3fb38d3d64c5fef079a761c7e0a5c7da81 Another commit message