Nếu tôi đang làm điều đó, tôi sẽ sử dụng "rebase". Giả sử bạn đã kiểm tra chi nhánh của mình và rằng nó được phân nhánh từ chủ, hãy làm
git rebase -i master
Điều này sẽ cho phép bạn sửa đổi các cam kết từ chủ thành chi nhánh hiện tại của bạn. Trong trường hợp của bạn, thay thế pick
bằng s
(for squash
) hoặc f
(for fixup
, là một squash làm giảm thông điệp cam kết của cam kết bị đè bẹp). Lưu và thoát (ZZ trong Vim), và rebase sẽ làm điều kỳ diệu của nó. Rebase là một giải pháp tổng quát hơn vì trong cùng một hoạt động bạn có thể loại bỏ, sắp xếp lại và xác nhận lại cam kết.
Cài đặt rebase sẽ mở trong Vim hoặc bất kỳ trình chỉnh sửa nào bạn đặt trong EDITOR
biến môi trường. Trong Vim, điều hướng để bắt đầu dòng với cam kết bạn muốn xóa (bằng phím mũi tên hoặc chuột), cw
để xóa pick
và nhập chế độ chèn, f
để sửa lỗi hoặc s
cho squash, sau đó ZZ
lưu và thoát.
Là một lưu ý phụ, liên kết bạn đưa ra gợi ý vỗ nhánh tính năng của bạn vào một cam kết duy nhất. Theo tôi đây là một ý tưởng khủng khiếp. Các cam kết nên thể hiện một tập hợp thay đổi có ý nghĩa. Một nhánh là tập hợp những thay đổi này đại diện cho một tính năng. Đập mọi thứ vào một cam kết lớn có nghĩa là các nhà phát triển khác sẽ khó theo dõi các thay đổi của bạn hơn.