2010-03-01 28 views

Trả lời

4

Không, tên chi nhánh là một phần của changeset (nó thực sự giống như nhãn bạn thêm vào cam kết), điều đó có nghĩa là hash thay đổi sẽ xuất hiện trên tên chi nhánh. Vì vậy, cách duy nhất để thay đổi nó trở lại là bằng cách viết lại lịch sử (nó không chơi tốt nếu bạn đã đẩy các thay đổi của bạn ở nơi khác, vì bạn sẽ phải viết lại mỗi repo có thay đổi).

Để viết lại lịch sử, bạn có thể sử dụng ví dụ mq.

0

Không phải là giải pháp hoàn chỉnh nhưng không có lịch sử viết lại; bạn có thể gắn thẻ bộ thay đổi cuối cùng trong nhánh chưa đặt tên. Nếu bạn không bao giờ rebranch từ này thẻ nên surfice. Nếu bạn cần phải rebranch bạn có thể chuyển sang một chi nhánh được đặt tên sau khi changeset được gắn thẻ.

14

Tôi chỉ muốn làm điều này, và đây là giải pháp tôi tìm thấy. Một năm đã trôi qua kể từ khi câu hỏi ban đầu được hỏi, điều này có thể giải thích tại sao bây giờ tôi có thể tìm ra giải pháp. Có bất lợi là bạn tạo thêm sửa đổi trong quá trình này, nhưng điều này không quá tệ đối với tôi.

Trước tiên, bạn quay lại nơi bạn muốn tạo chi nhánh. Trong trường hợp của tôi, tôi thực sự muốn bắt đầu một thư mục gốc mới (vì tôi không phải là rất hợp lý khi tôi bắt đầu kho lưu trữ, nhưng dù sao), vì vậy tôi đang cập nhật để null. Bạn có thể muốn bắt đầu ở một nơi khác, điều đó tùy thuộc vào tình huống của bạn.

$ hg update null 

Sau đó, tạo chi nhánh.

$ hg branch blah 
$ hg commit -m "Created blah branch." 

Sau đó, chúng tôi rebase tất cả các cam kết chúng tôi đã lên chi nhánh mới của chúng tôi:

$ hg rebase -s SOURCE -d DEST 

Các NGUỒN đây nên là người đầu tiên cam kết bạn đã thực hiện trong các cam kết mà bạn muốn tạo ra các chi nhánh từ, và DEST phải là cam kết mà chi nhánh được tạo ra (nhánh chúng tôi đã cam kết ở trên).

+1

Cảm ơn, điều này đã hoạt động hoàn hảo. Đây sẽ là câu trả lời được chấp nhận. –

+1

Điều này làm việc (tôi nghĩ), nhưng có vấn đề tiềm năng mà nó không chơi độc đáo nếu bạn đã chia sẻ kho của bạn với bất cứ ai (như @tonfa gián tiếp ghi chú). Theo ghi chú [rebase extension] (http://mercurial.selenic.com/wiki/RebaseExtension), bạn không nên rebase changesets đã được chia sẻ với người khác. Làm như vậy sẽ buộc tất cả mọi người khác thực hiện cùng một rebase_ –

+0

Đối với những người làm việc trong hg thủy ngân, bạn cần phải kích hoạt phần mở rộng rebase trong Cài đặt. – amaidment

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