2010-04-03 24 views
95

Mercurial ile işbirliği yapmakta yeniyim. Durumum:Bir hg birleştirme nasıl iptal edilir?

  • Başka bir programcı, 2 boşluklu girintili 4 boşluklu girintileri değiştirmek için bir dosyanın 1 değerini değiştirdi. (I.e, her satırı değiştirdi.) Bu rev ​​2'yi uzaktan repo'ya itti.
  • Yerel çalışma alanımdaki çeşitli kod değişiklikleriyle önemli değişiklikleri rev 1 yaptım. Bu devreyi 3
  • hg pull ed ve hg merge d derken neler olup bittiğine dair net bir fikre sahip değilim.
  • Çatışmalar sayısızdır ve gerçekte doğru değildir.

Bu yüzden, birleştirme işleminden önce yerel repo'umu 2 boşluklu girintilere dönüştürmeyi çok isterdim; sonra birleşme önemsiz olacaktır (varsayalım). Ama desteklenemiyorum. Sanırım hg update -r 3'a ihtiyacım var ama abort: outstanding uncommitted merges diyor.

Birleştirme işlemini nasıl geri alabilirim, yerel alanımdaki boşlukları nasıl değiştirebilirim ve nasıl olur? DİKKAT

hg update -C -r 3 

:

cevap

97

Sen -C (veya --clean) bayrağıyla kaydedilmemiş değişiklikleri atmak olabilir taahhüt değildi herşey gitmiş olacak! Bundan sonra, tüm işlemi yapmak için muhtemelen bir çeşit kod biçimlendirici aracı kullanmalısınız veya en azından bazılarını düzenli ifadelerle bulup değiştirmelisiniz. ^____ (alt çizgiler yerine 4 boşluk kullanın) yerine __ (2 boşluk) ile eşleşecek kadar basit bir şey, birkaç kez tekrarlanan (iç içe geçmiş bir kodunuz yoksa) çalışmalıdır.

+0

Oh - teşekkürler. Kendimi anladığım zaman doğru cevap vermiş olmalısın. Emacs içerisindeyim, bu yüzden M-x indent-region “reindent trick” i yaptı. – Grumdrig

+4

Notlandırılmamış dosyaların kaldırılmayacağına dikkat edin. – djsutho

1

Görünüşe göre sadece hg update -C -r 3'a ihtiyaç duyuyordum, bu da benim yerel dosyalarımı rev ile hatırlıyor (hg update'un ne yapacağını düşünüyordum ama yanılıyordum.) Yardımım için teşekkürler!

+2

'-C' veya' --clean' eklendiğinde, Mercurial'in bazı değiştirilmiş dosyaları attığında bile devam etmesini söylersiniz. Haklısınız ki, hg update -r X 'normalde X'i revizyona götürecektir, ama birleştirme yaptığınızda biraz daha fazla ısrar etmeniz gerekiyor :-) –

+7

Bence "hg revert --all --cancelmerge "çok daha sezgisel olurdu. –

98

BTW: Sadece yaptığın birleştirme geri döndürmek ve 3 senin revizyon numarası değilse bunu yapabilirsiniz:

hg update -C -r . 
+16

Benim gibi biri için, ilk başta bunun nasıl çalıştığını anlamadı: '' karakteri, önceki düzeltmenin kısayoludur. –

+1

harika cevap! en iyi olmalı –

+1

@Thymine: 'hg help update'den şunu alıyorum: * Herhangi bir değişiklik kümesi belirtilmediyse, şu anki dalın güncellemesini yapın ... * ve ipucu her zaman üzerinde çalıştığınız mevcut revizyonunuz olmayabilir. Şimdiye kadar test etmedim .. – math

17

kaydedilmemiş bir birleştirme geri almak için kullanmak kontrol edecektir

hg update --clean 

Tüm değişiklikleri kaybederek orijinal birleştirme ana öğesinin temiz bir kopyasını.

İlgili konular