Theo đề xuất của Mark, MqExtension là một giải pháp cho vấn đề của bạn. IMHO một quy trình công việc đơn giản hơn là sử dụng phần mở rộng rebase . Giả sử bạn có một lịch sử như thế này:
@ changeset: 2:81b92083cb1d
| tag: tip
| summary: my new feature: edit file a
|
o changeset: 1:8bdc4508ac7b
| summary: my new feature: add file b
|
o changeset: 0:d554afd54164
summary: initial
Điều này có nghĩa, sửa đổi 0
là cơ sở mà bạn bắt đầu làm việc trên tính năng của mình. Bây giờ bạn muốn có bản sửa đổi 1-2
trên một nhánh được đặt tên, giả sử my-feature
. Cập nhật để sửa đổi 0
và tạo chi nhánh đó:
$ hg up 0
$ hg branch my-feature
$ hg ci -m "start new branch my-feature"
Lịch sử bây giờ trông như thế này:
@ changeset: 3:b5939750b911
| branch: my-feature
| tag: tip
| parent: 0:d554afd54164
| summary: start new branch my-feature
|
| o changeset: 2:81b92083cb1d
| | summary: my new feature: edit file a
| |
| o changeset: 1:8bdc4508ac7b
|/ summary: my new feature: add file b
|
o changeset: 0:d554afd54164
summary: initial
Sử dụng rebase
lệnh để di chuyển sửa đổi 1-2
vào sửa đổi 3
:
$ hg rebase -s 1 -d 3
Kết quả này trong biểu đồ sau:
@ changeset: 3:88a90f9bbde7
| branch: my-feature
| tag: tip
| summary: my new feature: edit file a
|
o changeset: 2:38f5adf2cf4b
| branch: my-feature
| summary: my new feature: add file b
|
o changeset: 1:b5939750b911
| branch: my-feature
| summary: start new branch my-feature
|
o changeset: 0:d554afd54164
summary: initial
Đó là .. như đã đề cập trong các bình luận cho câu trả lời của Mark, di chuyển xung quanh các thay đổi đã được đẩy nói chung là một ý tưởng tồi, trừ khi bạn làm việc trong một nhóm nhỏ nơi bạn có thể giao tiếp và thực thi thao tác lịch sử của mình.