Dưới đây là một cách tiếp cận:
- Sử dụng API GitHub để có được các HEAD SHA cho tất cả các yêu cầu kéo sáp nhập.
- Khớp các SHA này với các chi nhánh địa phương.
Nếu HEAD nhánh của địa phương tương ứng với HEAD của nhánh đã được hợp nhất, bạn có thể xóa nó một cách an toàn. Điều này sẽ làm việc bất kể như thế nào PR được sáp nhập (đầy đủ hợp nhất, nhanh chóng foward, squash và hợp nhất).
Tôi đã triển khai phương pháp này trong tập lệnh delete-squashed-branches. Đây là những gì sử dụng trông giống như:
(master) $ git branch
delete-merged-prs
fixup
unmerged-branch
* master
(master) $ delete-squashed-branches
Finding local branches which were merged onto origin/master via GitHub...
warning: deleting branch 'delete-merged-prs' that has been merged to
'refs/remotes/origin/delete-merged-prs', but not yet merged to HEAD.
Deleted branch delete-merged-prs (was 325a42b).
warning: deleting branch 'fixup' that has been merged to
'refs/remotes/origin/fixup', but not yet merged to HEAD.
Deleted branch fixup (was e54f54b).
(master) $ git branch
unmerged-branch
* master
(. Những cảnh báo có thể được bỏ qua kể từ khi chi nhánh đã được sáp nhập vào tổng thể qua Squash & Merge)
Hãy cẩn thận:
- Bạn sẽ cần phải
pip install pygithub
để sử dụng tập lệnh.
- Nó sẽ tìm kiếm các chi nhánh địa phương được sáp nhập vào
origin/(current branch)
. Vì vậy, bạn sẽ muốn chạy nó trên master
, develop
hoặc bất kỳ chi nhánh nào bạn làm việc.
- Nếu bạn có nhiều nhánh sống lâu, phương pháp này sẽ không hoạt động tốt.
không chính xác đáng tin cậy nhưng 'git log --grep =" merge $ BRANCH "' hoặc một cái gì đó có thể hoạt động, nếu bạn đặt tên chi nhánh trong thư cam kết khi bạn thực hiện hợp nhất bí. –
Thật không may, chúng tôi không phải lúc nào cũng đặt tên của chi nhánh trong thông điệp cam kết khi chúng tôi thực hiện hợp nhất bí. – emilyxxie
Bạn có đang đạt được điều gì bằng cách đè bẹp? Bạn luôn luôn có thể bí mật thông qua rebase đầu tiên và sau đó làm một hợp nhất bình thường. –