2010-03-09 35 views
6

Giả sử rằng:Làm cách nào để 'hợp nhất hg' mà không ảnh hưởng đến thư mục làm việc?

  • Tôi có một repo có tên MyRepo.
  • Tôi có các thay đổi không được cam kết trong thư mục làm việc của mình.
  • Tôi thực hiện thao tác kéo từ Repo1 và tạo một chi nhánh trong MyRepo
  • Tôi muốn kết hợp những gì tôi đã có trong repo với những gì tôi vừa mới kéo.

Như được mô tả here, quá trình hợp nhất sẽ thay đổi trạng thái của thư mục làm việc.

Trong trường hợp của mình, tôi không muốn bỏ các thay đổi không được cam kết trong thư mục làm việc của mình vì tại thời điểm đó, tôi quan tâm đến việc thay đổi trạng thái MyRepo; không phải là trạng thái của thư mục làm việc của tôi.

Có cách nào để thực hiện quá trình hợp nhất, bao gồm giải quyết xung đột theo cách thủ công, mà không ảnh hưởng đến nội dung thư mục làm việc của tôi không? Quá trình này có thể được thực hiện trong các tệp tạm thời không? Hoặc tôi có nên thay đổi các thay đổi của mình, thực hiện hợp nhất và sau đó unshelve để khôi phục lại thư mục làm việc của tôi về trạng thái trước khi hợp nhất không?

Trả lời

4

Sử dụng shelve hoặc attic tiện ích mở rộng để tạm thời chặn các thay đổi của bạn khi bạn hợp nhất.

+0

Các liên kết của bạn bị hỏng. –

1

Bạn có thể sao chép kho lưu trữ của mình vào lần đăng ký mới nhất, hợp nhất các thay đổi với bản sao, cam kết và sau đó kéo các changeset mới từ kho lưu trữ nhân bản của bạn trở lại kho lưu trữ hiện tại.

3

Bạn không thể làm điều đó. Như các tài liệu nói, hợp nhất thực sự là một hoạt động cây làm việc. Giải quyết xung đột mà không kiểm tra kết quả là điên rồ. Hoặc là cố định hoặc cam kết các thay đổi và sau đó thực hiện hợp nhất. Nếu bạn không muốn cam kết hiển thị ở bất kỳ nơi nào, bạn có thể cam kết thay đổi, cập nhật bản sửa đổi trước đó, hợp nhất nhánh mới, áp dụng bản vá tạm thời và loại bỏ nhánh tạm thời đó.

+0

+1 để đặt giá. Có vẻ như cách đơn giản nhất để tiến hành hợp nhất mà không ảnh hưởng đến các thay đổi đang diễn ra của bạn. – gavinb

+0

Cảm ơn @ Lukáš Lalinský, tôi đang gặp sự cố tương tự. Khi bạn nói "hoặc là cố định hoặc cam kết thay đổi và sau đó thực hiện hợp nhất", theo "giá" bạn có nghĩa là "sử dụng phần mở rộng của giá đỡ" không? hoặc cái gì khác? –

+0

Có, tôi muốn sử dụng phần mở rộng của giá đỡ. –

0

Tôi khá mới mẻ với tính năng bảo thủ, nhưng bạn không thể sao chép từ kho lưu trữ cục bộ của mình và sao chép bản sao làm việc của mình sang bản sao? Sau đó bạn có thể chạy hợp nhất của bạn trong bản gốc? Bạn sẽ bảo toàn trạng thái bản sao làm việc của mình trong bản sao khi được tự do cho phép thay đổi bản sao làm việc của bản gốc.

Kiểm tra điều này trước tiên. Tôi chưa bao giờ làm nó trong hg.

0

Chỉ cần làm điều đó trong một bản sao.

  1. Clone MyRepo để MyRepo-sáp nhập, mà sẽ kéo trên tất cả các thay đổi cam kết, nhưng không thay đổi không bị giam bạn
  2. Bên MyRepo-sáp nhập làm một kéo từ Repo1.
  3. Bên MyRepo-sáp nhập làm tất cả những hg merge s bạn muốn
  4. đẩy
  5. Bên MyRepo-sáp nhập hoặc là Repo1 hoặc MyRepo gốc

Đẩy trở lại MyRepo sẽ không làm thay đổi dir làm việc của MyRepo, vì vậy đó là một hành động an toàn.

Hãy nhớ trong Mercurial rằng bản sao vô cùng nhanh và rẻ - trên các hệ thống tệp hiện đại, họ sử dụng các liên kết cứng dưới bìa để chúng không chiếm nhiều không gian trên đĩa.

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