Bạn có thể sử dụng kết hợp nối tiếp git rebase
và git branch
để áp dụng một nhóm các cam kết lên một nhánh khác. Như đã được đăng bởi wolfc , lệnh đầu tiên thực sự sao chép các xác nhận. Tuy nhiên, thay đổi không hiển thị cho đến khi bạn thêm tên chi nhánh vào cam kết cao nhất của nhóm.
Vui lòng mở hình ảnh trong một tab mới ...
Để tóm tắt các lệnh ở dạng văn bản:
- Mở gitk như một quy trình độc lập bằng cách sử dụng lệnh :
gitk --all &
.
- Chạy đi
git rebase --onto a b f
.
- Nhấn F5vào gitk . Không có gì thay đổi. Nhưng không
HEAD
đánh dấu.
- Chạy
git branch selection
- Nhấn F5vào gitk . Chi nhánh mới với cam kết của nó xuất hiện.
Điều này sẽ làm rõ mọi thứ:
- Cam kết
a
là đích đến mới của nhóm.
- Cam kết
b
là cam kết trước cam kết đầu tiên của nhóm (độc quyền).
- Cam kết
f
là cam kết cuối cùng của nhóm (bao gồm).
Sau đó, bạn có thể sử dụng git checkout feature && git reset --hard b
để xóa các cam kết c
đến f
từfeature
chi nhánh.
Ngoài câu trả lời này, tôi đã viết một bài đăng blog mô tả các lệnh trong một kịch bản khác sẽ giúp sử dụng chung nó.
b
dựa vàof
sau này, nhưng điều đó không liên quan gì đến việc hái anh đào.)