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ế pickbằ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 EDITORbiế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 pickvà nhập chế độ chèn, fđể sửa lỗi hoặc scho squash, sau đó ZZlư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.