Câu trả lời:
Cập nhật lên stiging
nhánh và tạo một nhánh mới của nó. Sau đó đóng cành cũ.
Tóm tắt:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
. Ví dụ : hg branch --force v3
. Điều này sẽ dẫn đến việc hg update v3
cập nhật lên v3
chi nhánh mới , như bạn muốn.
stiging
trước khi phân nhánh, bạn sẽ không nhận được "kết thúc lỏng lẻo"
Đối với độc giả tương lai: Với rebase
tiện ích mở rộng, bạn có thể tạo một nhánh mới có cùng cha mẹ stiging
và chuyển toàn bộ lịch sử chi nhánh sang nhánh đó, như sau:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Điều này giả định rằng stiging
chỉ có một cha mẹ. Tất nhiên bạn chỉ có thể sử dụng số sửa đổi rõ ràng thay thế.
Lưu ý 1: Nếu chi nhánh stiging
bao gồm hòa trộn với các ngành khác, tôi nghĩ rằng điều này sẽ bảo vệ họ, chừng nào staging
và stiging
có cùng một mẹ. Nhưng tôi chắc chắn sẽ kiểm tra lại.
Lưu ý 2: Vì điều này chỉnh sửa lịch sử, chi nhánh cũ sẽ không biến mất khỏi kho lưu trữ nhân bản (xem rebase
tài liệu). Trừ khi tất cả mọi người có thể nhân bản một lần nữa, nó có thể không phải là một giải pháp rất thiết thực cho một nhóm lớn.
Lưu ý3 / Chỉnh sửa (lịch sự của @JasonRCoombs): Bây giờ các giai đoạn là tiêu chuẩn trong đồng bóng, rebase
sẽ từ chối sửa đổi các thay đổi đã được đẩy. Hoặc đánh lừa nó bằng cách thay đổi pha trở lại bản nháp (với hg phases
) hoặc để nhánh cũ giữ nguyên vị trí của nó và chỉ tạo một bản sao được đặt tên đúng (ví dụ: với 'hg rebase --keep').
hg convert
thay thế.
--keep
sang lệnh rebase, nó sẽ sao chép thay vì di chuyển các thay đổi.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Lưu ý rằng tôi đã ghép các thay đổi từ nhánh khác vào nhánh này. Bên cạnh đó, nó được phân chia và hợp nhất miễn phí.
.
cho --dest
giá trị của bạn và rebase sẽ tự động lấy tên nhánh mới.
Nếu bạn có các thay đổi trên đó, thì bạn sẽ phải sử dụng tiện ích mở rộng chuyển đổi với sơ đồ nhánh để đổi tên nó. Mọi người sau đó sẽ phải nhân bản repo mới hoặc tước bỏ nhánh cũ.
Điều này sửa đổi lịch sử và chỉ dành cho người dùng Mercurial nâng cao. Đừng làm điều này nếu bạn không biết điều đó có nghĩa là gì.
Nếu stiging chỉ là cục bộ, bạn có thể thay đổi nó thành dàn với sự kết hợp của ghép và dải . Bắt đầu bằng cách cập nhật lên bộ thay đổi tổ tiên nơi mà sự kỳ thị đã chuyển hướng. Tạo nhánh dàn và ghép từng cam kết từ stiging đến staging. Dàn dựng bây giờ nên là một bản sao của stiging. Cuối cùng, tiêu diệt stiging bằng cách tước cam kết đầu tiên của nó.
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}