2010-07-23 7 views
12

Đồng nghiệp của tôi đã cam kết hai lần trên kho lưu trữ của mình trên chi nhánh sai.Làm cách nào để loại bỏ một số cam kết trong Mercurial đã được áp dụng cho chi nhánh sai và sau đó phát lại chúng trên đúng?

Cách hiệu quả nhất để thực hiện hai cam kết đó, loại bỏ chúng và sau đó cam kết một cách chính xác theo đúng nhánh? (các thay đổi chưa được đẩy)

Chúng tôi lý tưởng giống như cách để thực hiện điều này từ bên trong TortoiseHG nhưng tất nhiên, chúng tôi sẽ sử dụng dòng lệnh nếu đó là tùy chọn tốt nhất.

+0

này có thể giúp ở phía TortoiseHg: http://stackoverflow.com/questions/2963250/how-to-remove-accidental-branch-in-tortoisehg/2974657#2974657 – VonC

Trả lời

6

Từ những gì tôi đã phát hiện ra, cấy ghép là phần mở rộng tốt nhất để sử dụng. Nó áp dụng một thay đổi cho bất kỳ phiên bản khác mà bạn muốn nó.

http://mercurial.aragost.com/kick-start/tasks.html#transplanting-changes

Giải pháp cho vấn đề của tôi là để nâng cấp lên chi nhánh nơi hai thay đổi này sẽ được áp dụng, ghép hai changesets trong và sau đó sử dụng mq dải các thay đổi. Tất cả đều có thể làm được trong tortoisehg.

14

Tiện ích mở rộng Mercurial Queues (mq) có thể hữu ích.

Cho một lịch sử thay đổi trông như thế này:

@ changeset: 3:9dc681b56325 
| summary:  file4 
| 
o changeset: 2:6675b3f86aa7 
| summary:  file3 
| 
| o changeset: 1:4a3209ed5b2f 
|/ summary:  file2 
| 
o changeset: 0:6ab45ac3bd6d 
    summary:  file1 

Các lệnh sau đây di chuyển tập tin 'file4' changeset vào chi nhánh khác ('file2' head):

hg qimport -r 3  // convert revision 3 to a patch 
hg qpop    // remove it 
hg update 1   // switch to the other branch head 
hg qpush   // push the change back 
hg qfin -a   // convert the applied patch back to a changeset 

Hệ quả là :

@ changeset: 3:3faa754edb0b 
| summary:  file4 
| 
| o changeset: 2:6675b3f86aa7 
| | summary:  file3 
| | 
o | changeset: 1:4a3209ed5b2f 
|/ summary:  file2 
| 
o changeset: 0:6ab45ac3bd6d 
    summary:  file1 

Lưu ý rằng hàm băm thay đổi cho rev 3 đã thay đổi, do thay đổi có sự khác biệt ent cha mẹ bây giờ. Các phiên bản sau của TortoiseHg cũng hỗ trợ phần mở rộng MQ.