Mercurial'de bir birleştirme nasıl iptal edilir?


85

Birleştirme yaptım. Geri dönmek ve tekrar denemek istiyorum.
Birleştirmeyi taahhüt edilmeden önce geri almanın bir yolu var mı?

hg revertistediğimi yapmaz, yalnızca dosyaların metnini geri döndürür. Mercurial, ikinci birleşme girişimimi iptal etti ve orijinal birleştirme işleminin hala taahhüt edilmediğinden şikayet ediyor.

Bir hg mergekomuttan sonra ancak tamamlanmadan önce birleştirmeyi geri almanın bir yolu var mı ?


Yanıtlar:


107

hg update -C <one of the two merge changesets>


Basit, verimli ve bence bunu yapmanın en iyi yolu! : D
Eric-Karl

@JonL. - Evet, --cleaneşanlamlıdır -C. Hangi değişiklik kümesinin .atıfta bulunacağından emin değilim , ancak her zaman birleştirilmiş iki değişiklik kümesinden biri olacaktır.
Omnifarious

3
@Omnifarious, temizlik ., birleştirmeyi başlatmadan önce yaptığınız revizyona göre temizlenmelidir . Dolayısıyla, r42'de olsaydınız, r43 ile birleştirme girişiminde bulunduysanız, başarısız olursanız, temizlenirseniz, bozulmamış bir r42'ye geri dönersiniz.
Jon L.

2
hg update --clean.örtük varsayılan olarak göründüğü gibi çalışır - yine de açıkça belgelenmemiştir .
Joel Purra

@JoelPurra: .Bir birleştirme bağlamındaki anlamı oldukça belirsiz.
Omnifarious

39

Bunu yaptıktan sonra hg merge, ancak daha önce hg commit, çalışma kopyanızın iki üst öğesi vardır: ilk ebeveyn, birleştirmeden önce güncellediğiniz değişiklik kümesidir ve ikinci ebeveyn, birleştirdiğiniz değişiklikler kümesidir. Mercurial, hg mergeçalışan kopyanızın iki ebeveyni olduğu sürece tekrar yapmanıza izin vermeyecektir .

Nasıl ilerleyeceğiniz konusunda iki seçeneğiniz var:

  1. Birleştirmeyi iptal etmek ve başladığınız yere geri dönmek istiyorsanız, o zaman yapın

    hg update -C .
    

    Bu, çalışma kopyasını ilk ebeveynle eşleşecek şekilde güncelleyecektir: .her zaman çalışan kopyanın ilk ebeveynini belirtir.

  2. Bazı dosyaları yeniden birleştirmek istiyorsanız,

    hg resolve fileA fileB
    

    Bu, birleştirme araçlarını yaptığınız zamanki gibi yeniden başlatacaktır hg merge. Çözümleme komutu, hg mergebirleştirme araçlarınızın kötü yapılandırıldığını -zamanında öğrenirseniz iyidir : yapılandırmayı düzeltin ve çalıştırın hg resolve --all. hg resolveBirleştirme işleminden memnun kalana kadar istediğiniz kadar çalıştırabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.