Tôi không có kinh nghiệm với Git và bây giờ tôi có một vấn đề lớn rơi vào lòng tôi.Hoàn tác hợp nhất git
Sau đây là cách chi nhánh hiện tại của tôi trông giống như:
feature /---F1-----F2----\
/ \
master -----M0-----M1-----M2-----M3-----M4
\ /
bugfix \--B1-----B2-----------/
Tình hình:
Có người đã làm một điều rất xấu và đẩy một hợp nhất thực sự tồi tệ (M3). Tôi chỉ nhận thấy sự hợp nhất xấu khi các mô hình của chúng tôi (không phải mã nguồn) sẽ không tải sau khi tôi hợp nhất B1 và B2 thành M4. May mắn thay, tôi chưa đẩy M4.
Vấn đề:
Làm thế nào để thiết lập những điều đúng một lần nữa? Tôi muốn M0, M1, M2, F1, F2, B1 và B2. Nhưng tôi không muốn M3 và M4 (kể từ M4 rõ ràng là bị hỏng). Nếu tôi có để từ bỏ các thay đổi, thì F1 và F2 có thể được hy sinh :)
Tôi đã xem git revert
nhưng tôi không tự tin rằng tôi hoàn toàn hiểu cách hoạt động. Vì vậy ... Tôi thực sự hy vọng được giúp đỡ về cách giải quyết vấn đề này.
Xin cảm ơn trước.
Có, loại, nhưng "tính năng", "chính" và "lỗi" không thực sự là chi nhánh, tôi nghi ngờ đó là điều khó hiểu. Đó là, 3 ppl cam kết thay đổi của riêng họ về nhánh chính. Một anh chàng đã hợp nhất xấu và bị đẩy. Tôi kéo hợp nhất xấu. Bây giờ tôi muốn một cách để loại trừ việc hợp nhất xấu trong khi vẫn giữ tất cả các thay đổi riêng lẻ ... – aberrant80
Vì vậy, 'feature' và' bugfix' không có nhánh? Chắc chắn tác giả của 'feature' có một nhánh trong repo của riêng mình. Những gì bạn cần làm là đặt lại master của bạn thành M2, và yêu cầu tác giả của 'feature' làm như vậy (nhưng hãy chắc chắn rằng anh ta không bị mất chi nhánh' feature') và làm lại hợp nhất, đúng lúc này. Xem bản cập nhật của tôi nếu bạn muốn tự mình làm điều đó. – Gauthier
Bạn có thực sự có một repo không có chi nhánh 'master' không? – Gauthier