2012-01-10 34 views
5

Tôi có một chi nhánh có tên là feature và có một số cam kết. Chi nhánh và các cam kết của nó vẫn là cục bộ với máy của tôi (chưa được push chỉnh sửa đến một kho lưu trữ công khai). Đồ thị trông giống nhưThay đổi điểm chi nhánh

A---B---C---D---E---F---G master 
        \ 
        P---Q---R feature 

Bây giờ tôi nhận ra rằng tôi nên đã thực hiện các chi nhánh feature tắt của một sớm cam kết trên master. Giả sử cam kết C. Nói cách khác, đồ thị nên trông giống như

A---B---C---D---E---F---G master 
     \ 
      P---Q---R feature 

Những gì tôi đang cố gắng để làm trong bản chất là Revert cam D, EF ra khỏi chi nhánh feature. Có, tôi chỉ có thể revert cam kết một lần nhưng có quá nhiều thứ để hoàn nguyên; hình trên chỉ là một minh họa.

Trả lời

6

Những gì bạn muốn làm là rebase. Để nhận các cam kết P, QR và áp dụng chúng trên đầu trang của C, bạn thực hiện:

git rebase --onto C F feature 

Xem người đàn ông trang của git-rebase để biết thêm thông tin.

+0

Hoàn hảo. Hóa ra tôi đã không đọc _far enough_ vào trang người đàn ông. Tôi _did do_ một 'rebase' trước khi đăng câu hỏi. Tuy nhiên, chỉ cần nói rằng 'commit C' đã tồn tại. Nước sốt bí mật là công tắc '--onto'. Cảm ơn –

Các vấn đề liên quan