Điều bạn muốn làm là thực sự ghi lại lịch sử. Số nhận dạng của các cam kết sẽ thay đổi và trong một số trường hợp, các thay đổi được đưa ra bởi các cam kết sẽ thay đổi. Vì vậy, nếu có một cơ hội mà ai đó có thể làm việc dựa trên phiên bản cũ của chi nhánh bạn muốn thay đổi, tốt hơn là không nên làm điều này. Nhưng nếu bạn không xuất bản chi nhánh này, hãy cảm thấy tự do.
Giả sử rằng nhánh mà chúng ta muốn thay đổi có tên là 'master', và điểm mà chúng ta muốn bắt đầu nhánh mới có tên 'A' (trong ví dụ đã cho của tên bạn có thể sử dụng là 'master ~' 6 ').
Thứ nhất, cho phép tạo ra các chi nhánh mới từ cam kết 'A', chúng ta hãy đặt tên cho nó 'sửa'
$ git checkout -b fixes A
Điều này cũng sẽ làm cho chi nhánh 'sửa' hiện nay. Bởi vì chỉ có một vài cam kết mà chúng tôi muốn un-cherry-pick, chúng tôi anh đào có thể chọn chúng vào 'sửa' chi nhánh:
$ git cherry-pick A1
$ git cherry-pick A2
Sau đó, chúng tôi muốn loại bỏ các cam kết 'A1' và 'A2' từ chi nhánh 'bậc thầy'. Bởi vì chỉ có một vài cam kết chúng tôi muốn loại bỏ, và có thể nhiều hơn nữa, chúng tôi muốn giữ lại, chúng tôi eould sử dụng 'git rebase --interactive' cho rằng:
$ git rebase -i fixes master
Một biên tập viên sẽ được bắn lên với tất cả các cam kết trong 'chủ' sau khi cam kết 'A' (là cam kết chung tức là hợp nhất cơ sở của nhánh 'chủ' và nhánh 'sửa').Danh sách này sẽ trông như thế này:
pick deadbee B
pick fa1afe1 C
pick a98d4ba A1
...
dòng Remove với cam kết 'A1' và 'A2', lưu các thay đổi, biên tập viên gần (hoặc gửi thay đổi cho inetractive rebase) và git sẽ nộp đơn xin lại tất cả các cam kết ngoại trừ những người mà bạn đã xóa.
Sau đó, bạn có thể hoàn thiện với
$ git merge fixes
(git-rebase lại cho chúng ta về chi nhánh viết lại 'thầy').
Vì vậy, nếu nhánh tôi đã làm chủ, tôi nên di chuyển tên chủ đến người đứng đầu nhánh mới2? Làm cho tinh thần. Cảm ơn. – Otto
Cách làm việc quá nhiều. Xem câu trả lời của tôi dưới đây. –
Vâng, kỹ năng rebasing tương tác của tôi đã được cải thiện rất nhiều kể từ đó. :) – Bombe