2013-04-05 24 views
16

tôi biết Mercurial for Beginners: The Definitive Practical Guide và câu trả lời như Mercurial merge branches? (abort: push creates new remote branches)Làm thế nào để undo "hủy bỏ: push tạo đầu từ xa mới về chi nhánh" trong lanh lợi

Ở đây tôi đã vô tình tạo ra một tình huống mà Mercurial muốn tạo ra một cái đầu từ xa mới. Cách tốt nhất để hoàn tác điều này là gì và để lại ít hoặc không có dấu vết của lỗi này ở phía xa?

###> hg push 
pushing to http://example.com 
searching for changes 
abort: push creates new remote heads on branch 'default'! 
(did you forget to merge? use push -f to force) 

###> hg revert --all -r tip 

###> hg update -C 
0 files updated, 0 files merged, 0 files removed, 0 files unresolved 

###> hg incoming 
comparing with http://example.com 
searching for changes 
no changes found 

###> hg summary 
parent: 488:e3db024fe901 tip 
Misc. 
branch: default 
commit: (clean) 
update: 6 new changesets, 2 branch heads (merge) 

###> hg pull 
pulling from http://example.com 
searching for changes 
no changes found 

###> hg glog 
@ changeset: 488:e3db024fe901 
| tag:   tip 
| summary:  Misc. 
| 
o changeset: 487:b207579b9d41 
| parent:  480:ce775708800c 
| summary:  Misc. 
| 
| o changeset: 486:59a7a5b34c7f 
| | user:  other 
| | summary:  fixes 
| | 
| o changeset: 485:b28264333e18 
| | user:  other 
| | summary:  binary 

Nếu tôi hợp nhất, nó loại dường như OK:

hg merge 
abort: outstanding uncommitted merges 

Nhưng hg diff cho thấy tất cả các loại thay đổi mà tôi đã không làm. Tôi sẵn sàng áp dụng lại các thay đổi của mình ... làm cách nào tôi có thể đưa tất cả trở lại một mẹo, bỏ qua tất cả các thay đổi cục bộ?

+0

đầu ra ra hg là gì? – Tom

Trả lời

10

Dường như khi bạn đã thực hiện hg merge, bạn chưa cam kết kết quả thay đổi.

Khi bạn nhập vào một nhánh khác (trong trường hợp của bạn, bạn có thể cần phải chỉ định hg merge 486 để hợp nhất trong những thay đổi khác của người dùng), nó kết hợp nhánh đó vào thư mục làm việc của bạn. Sau đó, bạn cần phải kiểm tra xem tất cả các xung đột được giải quyết (nếu có) bằng cách sử dụng công cụ hợp nhất hoặc chỉnh sửa thủ công các tệp (và sau đó chạy hg resolve trên bất kỳ xung đột nào). Khi việc này được thực hiện, bạn cần phải hg commit các thay đổi mới, đã hợp nhất của mình.

Điều này sẽ giải thích tại sao hg diff cung cấp cho bạn nhiều thay đổi bạn đã không thực hiện - chúng là những thay đổi được thực hiện trên nhánh khác mà bạn chưa cam kết. Nếu bạn chạy hg summary hoặc hg parents trong thư mục làm việc của mình, bạn sẽ thấy hai cha mẹ được liệt kê: 486488. Bạn nên hg commit thư mục hoạt động này, tạo một hợp nhất mới 489.

Nếu bạn muốn hoàn tác quá trình hợp nhất hiện tại và bắt đầu lại, bạn đang cố gắng chạy hg update -C, sẽ đặt thư mục làm việc của bạn về trạng thái ban đầu (chưa được nhấn).

Nếu bạn muốn thoát khỏi thay đổi của bạn (487488 - bạn nêu bạn không nhớ lại áp dụng thay đổi của bạn), tùy chọn dễ dàng nhất mà không cần đến các phần mở rộng chỉ đơn giản là để lại bản sao kho và tiếp tục công việc của bạn từ đó.

7

Để thoát khỏi những thay đổi (ví dụ 487 và 488): Nếu bạn cảm thấy (như tôi) mà lại nhân bản kho, theo khuyến cáo ở trên và thậm chí officially recommended here là lố bịch, sau đó bạn sẽ nhận được MqExtension

Khi bật Mq, bạn có thể dễ dàng xóa các thay đổi bạn không muốn:

hg strip 487 
hg strip 488 
+0

Liên kết được đề xuất chính thức đã qua đời. –

+1

liên kết cập nhật đến trang web tài liệu mới về tài liệu –

2

Tôi không hợp nhất, nhưng đột nhiên tôi đang xem thông báo mà op đã đăng. Khi tôi thực hiện hg pull, trong dòng lệnh, nó hiển thị hủy bỏ! Mặc định kho lưu trữ không tìm thấy.

Các vấn đề liên quan