Yanıtlar:
Şubeye güncelleyin stiging
ve yeni bir dal oluşturun. Sonra eski dalı kapatın.
Özetle:
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
. Örneğin: hg branch --force v3
. Bu, istediğiniz gibi hg update v3
yeni v3
şubeye güncelleme ile sonuçlanır .
stiging
dallanma önce, bir "gevşek sonu" alamadım
Gelecekteki okuyucular için: Uzantıyla, rebase
aynı üst öğeyle yeni bir dal oluşturabilir stiging
ve tüm şube geçmişini şu şekilde taşıyabilirsiniz:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Bu stiging
sadece bir ebeveyni olduğunu varsayar . Elbette bunun yerine açık revizyon numaralarını kullanabilirsiniz.
Dal: 1 Not stiging
diğer dalları ile birleştirmeleri içerir, ben düşünüyorum sürece, bu onları koruyacaktır staging
ve stiging
aynı ana öğeye sahip. Ama kesinlikle tekrar kontrol ederdim.
Not 2: Bu, geçmişi düzenlediğinden, eski dal klonlanan depolardan kaybolmaz ( rebase
belgelere bakın ). Herkes yeniden klonlayamadıkça, büyük bir grup için çok pratik bir çözüm olmayabilir.
Not3 / Düzenleme (@JasonRCoombs'ın izniyle): Artık aşamalar cıvata standart rebase
olduğundan, zaten itilmiş olan değişiklik kümelerini değiştirmeyi reddedecektir. Ya aşamayı taslak haline getirerek (ile hg phases
) kandırın ya da eski dalın olduğu yerde kalmasına izin verin ve sadece düzgün adlandırılmış bir kopya yapın (örneğin, `hg rebase --keep 'ile).
hg convert
bunun yerine kullanabilirsiniz .
--keep
da değişiklikleri taşımak yerine kopyalanacak olan rebase komutuna geçin.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Değişiklik kümelerini başka bir daldan bu alana aşıladığımı unutmayın. Bunun yanı sıra, bölünmüş ve birleşmemiştir.
.
için kullanabilirsiniz --dest
ve rebase yeni dal adını otomatik olarak alacaktır.
Üzerinde değişiklik kümeleriniz varsa, yeniden adlandırmak için dönüştürme uzantısını bir şube haritasıyla kullanmanız gerekir. Daha sonra herkes yeni repoyu klonlamak veya eski şubeyi soymak zorunda kalacak.
Bu, geçmişi değiştirir ve yalnızca gelişmiş Mercurial kullanıcıları içindir. Bunun ne anlama geldiğini bilmiyorsanız bunu yapmayın.
Stiging sadece lokal ise, greft ve şerit kombinasyonu ile evrelemeye değiştirebilirsiniz . Stiglemenin birbirinden ayrıldığı ata değişiklik kümesini güncelleyerek başlayın. Evreleme dalını oluşturun ve her bir işlemi stiging'den evrelemeye kadar graft edin. Evreleme şimdi damgalamanın bir kopyası olmalıdır. Son olarak, ilk taahhüdünü soyarak stiging'i yok edin.
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}