Có rất nhiều cuộc nói chuyện về việc làm thế nào nó không dễ dàng để "hoàn tác" một hợp nhất trong git. Phiên bản ngắn: nếu bạn hoàn tác một cam kết hợp nhất, nó cũng yêu cầu git không bao giờ hợp nhất các thay đổi đó lại trong tương lai.Làm thế nào tôi có thể làm git sáp nhập theo cách mà họ dễ dàng quay trở lại?
Có điều gì tôi có thể làm khi thực hiện hợp nhất để giảm bớt vấn đề này không? Có rất nhiều tình huống mà việc hoàn tác hợp nhất sẽ thực sự, thực sự hữu ích, chỉ trong quá trình phát triển phần mềm bình thường, và quan trọng hơn, trong việc kiểm soát trạng thái của một nhánh phát hành, khi các thay đổi cần được khôi phục.
chỉnh sửa
Tôi đã thấy dung dịch trong this article và không thực sự coi đó là một giải pháp, nhiều hơn một giải thích về vấn đề này. Nó đòi hỏi
- lúc nào cũng sử dụng --no ff- nhớ
- tất cả hoàn tác-hòa trộn của bạn khi bạn muốn mang lại trong mã phụ thuộc vào họ (điều này có thể là một vài giờ, vài ngày, tuần, hoặc tháng trong tương lai ...)
những gì tôi muốn
sau đây là cách nó hoạt động trong Subversion. Giả sử tôi có một chi nhánh được gọi là "ứng cử viên phát hành", đó là những gì chúng tôi chạy trên máy chủ dàn dựng và nơi chúng tôi thử các tính năng. Hãy nói rằng tôi hợp nhất trong tính năng Một chi nhánh. Trong Subversion, đó là tất cả một changeset và tất cả lịch sử cho tất cả các tệp được hợp nhất. Hãy nói rằng chúng tôi không thích nó, vì vậy chúng tôi muốn lấy nó ra. Chúng tôi chỉ hoàn tác những thay đổi duy nhất đó, và không phải suy nghĩ về bất cứ điều gì khác. Chúng tôi có thể hợp nhất chi nhánh tính năng A trở lại vào bất kỳ lúc nào trong tương lai mà không cần phải nhớ rằng chúng tôi đã hợp nhất nó vào và lấy nó ra.
Tôi muốn có thể nhận được càng gần luồng đó càng tốt. Tôi muốn tối ưu hóa cho "không phải nhớ những thứ trong tương lai", ngay cả khi nó làm cho mọi thứ mất nhiều bước hơn theo cách nào đó. (Điều này có thể là không thể ...)
Có lý do nào khiến bạn không thể quay lại cam kết bằng cách sử dụng git reset --hard ORIG_HEAD? – urschrei
Câu trả lời của tôi có cần thêm thông tin không? –
urschrei: nếu tôi đã làm điều đó trên một chi nhánh trên một máy chủ, sau đó để đẩy các kết quả tôi sẽ phải sử dụng '- force', phải không? –