2014-07-23 9 views
5

Hiçbir yere gitmedikleri için kapattığım çeşitli dalları yarattım. Bu dallardan biri v2 olarak adlandırılır. Geçmişte bir süre kapalıydı.iki kafa oluşturur, nasıl itilir?

Daha fazla geliştirirken, v2 olarak da adlandırılan başka bir şube oluşturdum. Kaplumbağa Hg, bu dalın zaten var olduğunu ve "yeniden başlat" veya "geçerli şubeye bağlı" olmasını isteyip istemediğimi söyledi. Yeniden başlatmayı istedim.

v2 üzerinde daha fazla işlem gerçekleşir (birkaç işlem) ve zaten projemi içeren (daha önce kapalı olan v2 dahil) bir uzak depoya basmaya karar verdim. Sonra

abort: push creates new remote head fce4441f5150 on branch 'v2'! 
hint: merge or see "hg help push" for details about pushing new heads 

Gerçekten birleştirmek istemiyorum mesaj almak bu dallar çok ortak yok gibi (Ben mesaj "Yeni v2 eski v2 birleştirme" anlamına geldiğini varsayalım). v2'u kapatmayı bıraktığım için kapattım çünkü artık onu kullanmayı beklemiyordum. (isimleri yeniden kullanmakla ilgili kendinden şüphe duyulursa, soruda daha sonra gelir, endişe yok)

Bu beni yeni kafalarla bırakıyor.

enter image description here

gitmeliyim: hg outgoing Ben gerçekleşmesi bekleniyor bana ne gösterir ...

# this is the first commit for the new v2 

changeset: 221:ba47b76010ef 
branch:  v2 
user:  w <[email protected]> 
date:  Fri Jul 18 14:42:08 2014 +0200 
summary:  New version: all frames are subclasses, frames are organiz 

# some more commits for the new v2 

# last commit for the new v2 

changeset: 225:fce4441f5150 
branch:  v2 
tag:   tip 
user:  w <[email protected]> 
date:  Wed Jul 23 13:17:19 2014 +0200 
summary:  added manualstart.sh 

... ama v2 (eskisi, kapalı) havuzda zaten mevcut olan şu andan itibaren?

  • Uzak depoda yeni bir kafa oluşturulmasını zorlamalı mıyım? Geçmişte beni çok fazla küfür ettiği için --force parametresini beğenmiyorum. Bu sefer iyi olduğundan emin olmak istiyorum.
  • veya başka bir şey var mı?

Genel olarak, daha önce kapatılan şubeleri yeniden kullanmanın iyi bir şey olmadığını öğrendim, bu doğru mu? Ya da bazı önlemler almam sağlanmış mı?

cevap

4

Şube isimlerini yeniden kullanmak iyi bir şey değil.

İhtiyacınız olanı gerçekleştirmek için iki yol görüyorum - bunların hiçbiri gerçekten "hoş" değil.

1) Daha önce bahsettiğiniz -f seçeneği var. Birden başlarını iterek korkuyorlar lütfen adımların iterek deneyin:

hg push -r <close commit of old branch> 
hg push -r <parent of 221> 
hg push -f -r 221 --new-branch 
hg push 

2) Diğer seçenek yeni bir dalına eski Hayır-Op-Birleştirme yapmak olacaktır.

hg update -C 221 
hg merge v2 
hg revert -a -r 221 
hg commit -m "old is marked as commited" 

Ama yandallan veya benzer geldi bile birleşti olarak eski v2 olan tüm değişiklikler işaretlenmiştir çünkü bu, gelecekteki birleştirme sorunlara neden olabileceğini unutmayın.

+0

Teşekkürler. İtmeyi zorlamaktan korkmuyorum, bir keresinde ne yaptığımı anlamadan kullandım ve depomu berbat ettim. Sadece iki kafaya sahip olmanın felaketli bir şey olmadığından emin olmak istedim (zaten yerel olarak var). Ve evet - gelecekte isimleri tekrar kullanmayacağım :) – WoJ

1

Gelecekte başvurmak için başka bir seçenek, eski dalı repodan tamamen çıkarmaktır. Böylece yeni şubeyi herhangi bir sorun olmadan zorlamanıza izin verir.

hg strip <start of old branch> 

Bu eski şube şey içine birleşti olmasaydı mükemmel bir seçenektir. Sadece negatif, tüm klonlarda komutu çalıştırdığınızdır.