Giả sử bạn không quan tâm đến việc giữ lại bất kỳ thư cam kết hiện có nào, bạn có thể sử dụng công thức git tiện lợi (và nhanh). Trước tiên, hãy đảm bảo chi nhánh của bạn được kiểm tra:
git checkout <branch-to-squash>
Vì lý do an toàn, hãy gắn thẻ cam kết hiện tại.
git tag my-branch-backup
Tiếp theo, di chuyển các HEAD chi nhánh trở lại tốt nhất của bạn cam kết (không có sửa đổi không gian làm việc hoặc chỉ số):
git reset --soft <last-good-commit>
Sử dụng git status
, bạn sẽ nhận thấy rằng tất cả những thay đổi về chi nhánh tính năng của bạn bây giờ đã tổ chức. Tất cả những gì còn lại để làm là ...
git commit
Phương pháp này là rất tốt để củng cố lịch sử gitly và phức tạp gnarly. Ngoài ra, không có xung đột hợp nhất/rebase để giải quyết!
Bây giờ, nếu bạn cần giữ lại bất kỳ thông điệp cam kết hiện có nào hoặc làm bất kỳ điều gì huyền ảo hơn mức cho phép ở trên, bạn sẽ muốn sử dụng git rebase --interactive
.
Giải pháp có nguồn gốc từ: http://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit
tham khảo: http://git-scm.com/docs/git-reset
tham khảo: http://git-scm.com/docs/git-rebase
Nguồn
2015-05-14 01:14:22
Xem câu hỏi này & câu trả lời http: // stackoverflow.com/questions/250238/collapsing-a-git-repositorys-history – iafonov