Tôi có tình huống sau: Tôi đã thực hiện một số cam kết với kho lưu trữ cục bộ của mình, và sau đó hợp nhất rất lớn một nhánh khác (~ 150 commit) vào master - nó có rất nhiều xung đột trong đó.Làm thế nào để sử dụng git rebase -i sau khi git merge mà không làm rối tung mọi thứ?
Bây giờ, tôi muốn di chuyển một cam kết tôi đã thực hiện trước khi hợp nhất để được sau khi nó trước khi đẩy.
Thông thường, tôi sẽ sử dụng "rebase -i" cho nó. Thật không may, hành vi mặc định là phá vỡ cam kết hợp nhất tôi đã thực sự thêm 150 cam kết để làm chủ vào các cam kết riêng biệt (tôi hiểu nó giống như tôi sẽ sử dụng rebase thay vì hợp nhất để bắt đầu) - mà là hành vi xấu đối với tôi vì nhiều lý do.
Tôi đã phát hiện ra cờ '-p' để rebase, giữ lại các hợp nhất và rất hài lòng về nó. Thật không may, điều này thực sự áp dụng cùng một hợp nhất một lần nữa, và quên tất cả về công việc khó khăn của tôi trong việc giải quyết xung đột. Một lần nữa - hành vi xấu!
Có giải pháp cho những gì tôi muốn không? Sử dụng rebase -i sau khi hợp nhất để sắp xếp lại hoặc chỉnh sửa các cam kết cụ thể mà không phải lặp lại các hoạt động sau hợp nhất của tôi?
Cảm ơn!
Bạn đã xem [git rerere] (http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html) chưa? –
'git rerere' không thể giúp bạn ngay bây giờ, vì nó ghi lại độ phân giải xung đột khi bạn cam kết hợp nhất ... ngoại trừ có một tập lệnh gọi là [rerere-train.sh] (http://git.kernel.org/? p = git/git.git; a = blob; f = contrib/rerere-train.sh; hb = HEAD) trong thư mục contrib của git mà "primes" cơ sở dữ liệu định tuyến lại từ các cam kết hợp nhất mà bạn đã thực hiện. – Cascabel