Có cách nào để kết hợp một loạt các thay đổi Mercurial với một chi nhánh được đặt tên sau khi chúng đã được cam kết, tức là hồi tố?Phân nhánh có tên Retroactive trong Mercurial
Trả lời
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.
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ẻ.
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. Phân nhánh trong Mercurial
- 2. Phân nhánh với Mercurial SCM
- 3. Đổi tên cam kết thành chi nhánh trong Mercurial
- 4. Chi nhánh nhỏ, tạm thời trong Mercurial
- 5. Hoàn tác tạo chi nhánh trong Mercurial
- 6. Mercurial có thể hợp nhất một chi nhánh có tên không phải là đầu không?
- 7. Mercurial - hg cập nhật vào một ngày cụ thể trên một chi nhánh có tên
- 8. Mercurial - đóng nhánh mặc định và thay thế bằng một nhánh có tên là mặc định mới
- 9. Mercurial: giữ nhánh mặc định là "active"
- 10. MQ so với các chi nhánh trong Mercurial
- 11. Bản ghi Mercurial của sự hợp nhất giữa các chi nhánh có tên
- 12. mercurial đặt chi nhánh làm chi nhánh mặc định mới
- 13. nếu có phân nhánh khác trong jinja2
- 14. Tại sao các Mercurial backouts trong một chi nhánh ảnh hưởng đến các chi nhánh khác?
- 15. Di chuyển phân cấp chi nhánh SVN phức tạp sang Mercurial
- 16. Có thể mở lại một nhánh đã đóng trong Mercurial không?
- 17. Mercurial: Các chi nhánh được đặt tên so với nhiều kho lưu trữ
- 18. Làm thế nào để chỉnh sửa thông báo cam kết Mercurial sau khi phân nhánh?
- 19. Thay đổi di chuyển bằng Mercurial đến chi nhánh mới
- 20. Cách xóa chi nhánh có tên "--orphan"
- 21. Bị kẹt với hai nhánh mặc định trong Mercurial sau khi chi nhánh bị hỏng cam kết
- 22. Mercurial/IIS/Không có mô-đun tên osutil
- 23. Trong Mercurial, có một thiết lập để luôn luôn đẩy chi nhánh mới?
- 24. Mercurial: làm thế nào để hợp nhất các thay đổi cho một tập tin được đổi tên trong nhánh khác?
- 25. Cố gắng hợp nhất trở lại từ chi nhánh đến chi nhánh chính và đóng trong Mercurial
- 26. Móc Mercurial Changegroup thay đổi dựa trên các nhánh
- 27. Xử lý tên tệp không phân biệt chữ hoa chữ thường trong Mercurial
- 28. Cách cấu hình Jenkins để xây dựng dự án từ các nhánh khác nhau trong Mercurial
- 29. Mercurial: Xóa changeset khỏi chi nhánh từ xa
- 30. Tên chi nhánh Git trong dấu nhắc
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. –
Đ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_ –
Đố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