Bir hg birleştirmeden nasıl vazgeçilir?


131

Mercurial ile işbirliği konusunda yeniyim. Benim durumum:

  • Başka bir programcı, 4 boşluklu girintileri 2 boşluklu girintiyle değiştirmek için bir dosyanın 1. devrini değiştirdi. (Yani her satırı değiştirdi.) O rev 2'yi çağırın, uzak depoya itin.
  • Yerel çalışma alanımda çeşitli kod değişiklikleriyle rev 1 önemli değişiklikler yaptım. Devri ara 3.
  • Ben ettik hg pulled ve hg mergeneler olduğunu net bir fikir olmaksızın d.
  • Çatışmalar sayısızdır ve gerçekten önemli değildir.

Bu yüzden, yerel depomu birleştirmeden önce 2 boşluklu girintilere değiştirmeyi çok isterdim; o zaman birleştirme önemsiz olacaktır (sanırım). Ama yedekleyemiyorum. Sanırım ihtiyacım var hg update -r 3ama diyor abort: outstanding uncommitted merges.

Yerel depomdaki birleştirme, aralık değiştirme ve yeniden birleştirme işlemini nasıl geri alabilirim?

Yanıtlar:


127

Taahhüt edilmeyen değişiklikleri -C (veya --clean) bayrağıyla atabilirsiniz:

hg update -C -r 3

DİKKAT: İşlenmeyen her şey gitmiş olacak!

Bundan sonra, muhtemelen tüm işlemi yapmak için bir tür kod biçimlendirme aracı kullanmalısınız veya en azından bazıları bulup normal ifadelerle değiştirmelisiniz. Eşleşenleri ^____(altçizgiler yerine 4 boşluk kullanın) __(2 boşluk) ile değiştirmek kadar basit bir şey , birkaç kez tekrarlanmalıdır (bazı iç içe kodunuz yoksa) işe yaramalıdır.


Oh teşekkürler. Kendim anladığım zaman doğru cevap vermiş olmalısın. Ben emacs içindeyim M-x indent-region, hatırlatma numarası da öyle.
Grumdrig

6
İzlenmeyen dosyaların kaldırılmayacağını belirtmek gerekir.
djsutho

132

BTW: Yaptığınız birleştirmeyi yeni geri döndürdüyseniz ve 3 revizyon numaranız değilse, bunu yapabilirsiniz:

hg update -C -r .

24
İlk başta bunun nasıl çalıştığını anlamayan benim gibi biri için: nokta ., önceki revizyona giden kısayol.
Jeroen Wiert Pluimers

1
mükemmel cevap! en iyisi olmalı
Oleg Abrazhaev

1
@ Timine: From hg help updateI get: Herhangi bir değişiklik belirtilmezse, mevcut adlandırılmış dalın ucuna güncelleyin ... ve ipucu her zaman üzerinde çalıştığınız mevcut revizyonunuz olmayabilir. Şimdiye kadar test etmedim ..
matematik

1
Ah bu bilinmesi gereken güzel bir detay ... Aslında ayrılmanın -r .aynı olduğunu iddia eden
yorumumu

Basit ve çok yardımcı.
Naveen Kumar V

33

Gerçekleştirilmemiş bir birleştirmeyi geri almak için şunu kullanın:

hg update --clean

bu, orijinal birleştirme üst öğesinin temiz bir kopyasını kontrol edecek ve tüm değişiklikleri kaybedecektir.


2

Görünüşe göre sadece ihtiyacım vardı hg update -C -r 3, bu da yerel dosyalarımın üzerine rev göz önünde bulundurularak yazılıyor (ki hg updatebunu yapacağını düşündüm ; ama yanılmışım.) Yardımım için teşekkürler!


2
Ekleme -Cya --cleansen, devam etmeye Mercurial söyle nasıl bazı değiştirilmiş dosyaları atmak olacaktır dahi olduğunu. Haklısın, hg update -r Xbu normalde seni X revizyonuna götürecek, ancak bir birleşmedeyken biraz daha ısrar etmelisin :-)
Martin Geisler

7
Bence "hg revert --all --cancelmerge" çok daha sezgisel olacaktır.
Warren P
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.